Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > ถ้าผมใช้ parsley.js เป็นตัว validate ผมจะสามารถ validate field ที่ ajax ส่งมาอย่างไรครับ



 

ถ้าผมใช้ parsley.js เป็นตัว validate ผมจะสามารถ validate field ที่ ajax ส่งมาอย่างไรครับ

 



Topic : 098206



โพสกระทู้ ( 140 )
บทความ ( 0 )



สถานะออฟไลน์




ผมใช้ http://parsleyjs.org/documentation.html ในการ validate form ครับ แต่ผมไม่สามารถ validate field ที่ ajax ส่งกลับมา

สมมุติว่าผม สร้าง list menu ขึ้นมาเพื่อให้ user กรอกว่าต้องการระบุวันเกิดจำนวนกี่คน ดังนี้

Code (PHP)
<select name="people" id="people">
<option value="none">ไม่ระบุ</option>
<option value="1">1 คน</option>
<option value="2">2 คน</option>
</select>


และผมใช้ ajax ในการสร้าง field ดังนี้

Code (PHP)
<?
	for($i=1;$i<=$value;$i++){
?>
	<label>คนที่ <?=$i;?> : เกิดวันที่</label>
	<script>
		$(function() {
			$( "#people<?=$i;?>" ).datepicker({changeMonth: true, changeYear: true, yearRange: "c-70:c-0"});
			$( "#people<?=$i;?>" ).datepicker( "option", "dateFormat", "dd/mm/yy" );
		});
	</script>
	<div class="input text required"><input name="people<?=$i;?>" type="text" id="people<?=$i;?>" data-type="dateTh" data-required = "true"/></div>
<?
	}
?>


ajax ส่ง field กลับมาให้ผมถูกต้องครับ แต่เมื่อผมกดปุ่ม submit บน form มันกลับไม่ validate form ให้

แต่ถ้าทำแบบ static คือฝัง โค้ดลงไปแบบไม่ใช้ ajax form กลับ validate ได้ ผมควรทำอย่างไรครับ



Tag : PHP, Ajax, jQuery, CakePHP









ประวัติการแก้ไข
2013-07-24 16:15:21
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-07-24 16:12:36 By : zinlucifer View : 2231 Reply : 5
 

 

No. 1



โพสกระทู้ ( 2,258 )
บทความ ( 5 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook Hi5 Blogger

event validate form เกิดจากการกด submit ใช่ไหมครับ ? ถ้าใช่ขอดู code หน้า submit ครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-24 16:23:33 By : Manussawin
 


 

No. 2



โพสกระทู้ ( 2,258 )
บทความ ( 5 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook Hi5 Blogger

ถ้าผมเดาไม่ผิดนะครับกรณีที่รับ response เป็น html กลับมาหลังจาก success function แล้ว tag มันไม่ active ครับ (ไม่รู้จะเรียกว่าอะไร) ลองคลิกขวา view source ดูครับ ว่ามี tag อยู่หรือเปล่า กรณีนี้ถ้าเราใช้

Code (JavaScript)
$("#btnsubmit").click(function(){
..............
});


ถ้าใช้แบบข้างต้นกรณีรับ response เป็น html กลับมาจะไม่ทำงานครับ ต้องใช้ .live ครับ

Code (JavaScript)
$("#btnsubmit").live('click',function(){
.................
});

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-24 16:43:52 By : Manussawin
 

 

No. 3



โพสกระทู้ ( 140 )
บทความ ( 0 )



สถานะออฟไลน์


ผมใช้ Code ประมานนี้ครับ

index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<link rel="stylesheet" type="text/css" href="bootstrap.min.css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="parsley.js"></script>
<script type="text/javascript" src="bootstrap.js"></script>
<script type="text/javascript">
$(document).ready(function(){
	$("#people").change(function(){
		$.post("ajax.php", { 
			data1: $("#people").val()},
			function(result){
				$("#div1").html(result);
			}
		);
	});
});
</script>

</head>

<body>
<div class="container" role="main" id="main">
	<div class="row-fluid">
		<h1>Pepple</h1>
		<hr>
		<div class="span4">
            <form action="#" id="form1" data-validate="parsley" method="post" accept-charset="utf-8">
            	<label>ระบุจำนวน :</label>
            	<div class="input select">
            		<select name="people" id="people">
            			<option value="none">ไม่ระบุ</option>
            			<option value="1">1 คน</option>
            			<option value="2">2 คน</option>
            		</select>
            	</div>
            	<div id="div1">
            		<label>คนที่ 1 : เกิดวันที่</label>
					<div class="input text required"><input name="people1" type="text" id="people1" data-type="dateTh" data-required = "true"/></div>
            	</div>
			<button type="submit" id="submit" class="btn btn-primary">Caluculate</button>
            </form>
        </div>
    </div>
</div>
</body>
</html>


ajax.php
<?
	for($i=1;$i<=$_POST['data1'];$i++){
?>
	<label>คนที่ <?=$i;?> : เกิดวันที่</label>
	<div class="input text required"><input name="people<?=$i;?>" type="text" id="people<?=$i;?>" data-type="dateTh" data-required = "true"/></div>
<?
	}
?>



ประวัติการแก้ไข
2013-07-24 16:57:56
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-24 16:57:13 By : zinlucifer
 


 

No. 4



โพสกระทู้ ( 2,258 )
บทความ ( 5 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook Hi5 Blogger

Code (JavaScript)
$("#submit").click(function(){
......
});


ถ้าใช้แบบข้างบน ก็ไม่ทำงานหรอครับ แล้ว code ส่วน validate form อยู่ไหนครับ ถ้าหากไม่ได้ลองเอา <button type="submit" id="submit" class="btn btn-primary">Caluculate</button> ไปใส่ใน ajax.php ด้วยครับ แล้วหลังจากรับ response แล้วก็ใช้

Code (JavaScript)
$("#btnsubmit").live('click',function(){
//แทรก code validate form
});

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-24 22:05:08 By : Manussawin
 


 

No. 5



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

เป็นเพราะ parsley ไม่ validate input ที่สร้างขึ้นมาในภายหลังครับ
ตามที่ผมอ่านใน documentation ของ parsley มันมี method ที่จำเป็นจะต้องเรียกใช้ในกรณีที่เราเพิ่ม field ใหม่เข้าไป
คือ addItem ครับ

รูปแบบคือ
$( '#form' ).parsley( 'addItem', '#itemid' );


ซึ่ง #itemid ก็น่าจะเป็น selector (น่าจะใช้ selector อื่นได้ด้วยนอกจาก #id)

ในกรณีของคุณ html ที่ส่งกลับมาคือ input text ซึ่งมี id อยู่แล้ว และขึ้นต้นด้วย people
เราน่าจะสามารถเรียกใช้ selector แบบนี้ได้

Code (JavaScript)
// เพิ่มการ validate ให้กับ input ที่มี id ขึ้นต้นด้วย people
$( '#form1' ).parsley( 'addItem', 'input[id^="people"]' );


แต่จากที่อ่าน documentation ในทางกลับกัน หากไม่ต้องการ validate input ตัวไหนแล้ว แม้มันจะไม่อยู่ใน document แล้วก็ตาม
ควรที่จะเรียกใช้ removeItem เพื่อลดการทำงานของ parsley

ดังนั้นควรที่จะ removeItem ก่อนที่จะเรียก ajax
และเรียก addItem หลังจากได้ html จาก ajax มาแล้ว

Code (JavaScript)
$(document).ready(function(){
	$("#people").change(function(){
		// ยกเลิกการ validate input ทุกตัวใน #div1 เพราะมันจะถูกแทนที่ด้วย html จาก ajax
		$( '#form1' ).parsley( 'removeItem', '#div1 input' );
		$.post("ajax.php", { 
			data1: $("#people").val()},
			function(result){
				$("#div1").html(result);
				// เพิ่มการ validate เข้าไปใหม่สำหรับ input ที่เพิ่งสร้างขึ้นมา
				$( '#form1' ).parsley( 'addItem', 'input[id^="people"]' );
			}
		);
	});
});


ยังไงก็ลองดูนะครับ นี่ผมตอบจากการวิเคราะห์จากข้อมูลใน documentation เฉยๆ ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-24 23:20:47 By : cookiephp
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ถ้าผมใช้ parsley.js เป็นตัว validate ผมจะสามารถ validate field ที่ ajax ส่งมาอย่างไรครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่