
เพื่อนผมท่านหนึ่งสร้างฟอร์มให้ยูสเซอร์ป้อนค่า ครั้งละหลายๆค่า จะได้ไม่เสียเวลา โดยเพื่อนท่านนั้นใช้เท็กบ็อกแบบอะเรย์
<form id="form1" name="form1" method="post" action=""> <p> Product : <input type="text" name="product[]" id="product[]" /> </p> <p> Product : <input type="text" name="product[]" id="product[]" /> </p> <p> <input type="submit" name="button" id="button" value="Submit" /> </p> </form> |
ทีนี้เรื่องของเรื่องก็คืออยากจะเช็กให้ยูสเซอร์ต้องป้อนข้อมูลในทุกช่องเท็กบ้อก จะใช้ jQuery เช็กยังไง
เท่าที่ผมคิดได้ตอนนี้มี 2 วิธีเขียน
jQuery .each วิธีที่ 1
<script type="text/javascript">
$(document).ready(function(){
$('#form1').submit(function(){
var msg = 'โปรดตรวจสอบความถูกต้องด้วยจ่ะ \n\n';
var empty = false;
$('input[name^=product]').each(function(){
if( $(this).val() == '' ){ empty=true; }
});
if( empty ){
msg += 'มีช่องป้อนข้อมูลบางตัวว่างอยู่';
alert( msg );
return false;
}
});
})
</script> |
วนลูปไล่คอนโทรล input ที่มีชื่อขึ้นต้นด้วยคำว่า product ไปทีละตัว ถ้าคอนโทรลตัวปัจจุบันมีค่าว่าง หรือกล่าวได้ว่ายูสเซอร์ไม่ได้ป้อนข้อมูล เราก็เซ็ตบอกไว้ว่ามีคอนโทรลเท็กบ้อกของเราบางตัวมีค่าว่าง
$('input[name^=product]').each(function(){
if( $(this).val() == '' ){ empty=true; }
}); |
นี่ละครับวิธีการใช้งาน .each ของ jQuery คือมันจะทำหน้าที่วนลูปไต่คอนโทรลไปทีละตัว แล้วเราสามารถเข้าถึงคอนโทรลแต่ละตัวได้ด้วยคำสั่ง $(this)
jQuery .each วิธีที่ 2
<script type="text/javascript">
$(document).ready(function(){
$('#form1').submit(function(){
var msg = 'โปรดตรวจสอบความถูกต้องด้วยจ่ะ \n\n';
var empty = false;
$.each( $('input[name^=product]') , function(){
if( $(this).val() == '' ){ empty=true; }
});
if( empty ){
msg += 'มีช่องป้อนข้อมูลบางตัวว่างอยู่';
alert( msg );
return false;
}
});
})
</script> |
รูปแบบการเขียนต่างกัน แต่ให้ผลลัพธ์ที่เหมือนกัน
$.each( $('input[name^=product]') , function(){
if( $(this).val() == '' ){ empty=true; }
}); |
วิธีการใช้งานคำสั่ง jQuery .each เพิ่มเติม ดูได้ที่นี่ครับ http://api.jquery.com/each/





minddezign says:
21/01/2553 at 21/01/2553
ขอบคุณครับ สำหรับความรู้ครับ
บอย says:
21/01/2553 at 21/01/2553
ใช้ jquery ตรวจช่องว่าง อาจโดนบอมได้นะครับ โดยการปิด java script
administrator says:
21/01/2553 at 21/01/2553
เวลาใช้งานจริงๆ การป้องกันแค่ด้วยจาวาสคริปต์คงไม่พอ
เราอาจจะต้องใช้ captcha ประกอบด้วย และอาจจะต้องใช้ server side script เข้ามาร่วมด้วย
อานนท์ says:
05/05/2554 at 05/05/2554
ขอบคุณมากคับ
mr.gookoong says:
15/01/2555 at 15/01/2555
Thank you!