GORAGOD.com

การป้องกันบาร์โค้ด Submit ฟอร์มอัตโนมัติ

มีคำถามจากบอร์ดว่า มีการใช้เครื่องยิงบาร์โค้ดเพื่อกรอกฟอร์ม แต่เมื่อกรอกฟอร์มแล้ว เครื่องยิงบาร์โค้ดจะ submit ฟอร์มโดยอัตโนมัติทันที จะทำอย่างไรดี เพื่อให้ฟอร์มจะ submit ก็ต่อเมื่อผู้ใช้ เป็นผู้กดปุ่มเท่านั้น 

ปัญหานี้แก้ไม่ยากครับ อย่างแรกเลย ก็ต้องรู้ก่อนกว่า ตัวยิงบาร์โค้ด เมื่อ่านข้อมูลแล้วให้ค่าอะไรออกมา ถ้ามันส่งค่า return(13) ออกมา หลังจากจบข้อมูลก็สามารถใช้เทคนิคง่ายๆนี้ได้ (ถ้าส่งค่าเป็นอย่างอื่นก็อาจต้องใช้วิธีอื่นละครับ)

<form name=form1 method=post action=?>
 <p><label>Barcode : <input type=text name=barcode></label></p>
 <p><label>Name : <input type=text name=name></label></p>
 <p><input type=button value=Send onclick="return doclick()"></p>
 <input type=submit id=submit style="display:none">
</form>

โค้ดด้านบนเป็นส่วนของฟอร์มครับ เราจะใช้ input barcode สำหรับรับค่าจาก barcode ใครใช้แตกต่างยังไงก็จัดการเอานะครับ แต่สิ่งที่สำคัญก็คือ ฟอร์มของเราจะทำการซ่อนปุ่ม Submit ครับ และเราจะใช้ button แทนปุ่ม Submit เหตุผลก็เพราะ ถ้าเราใช้ปุ่ม Submit มันจะคอยตรวจจับการกดคีย์ 13 และจะทำการ Submit ทันทีที่พบครับ
<script type="text/javascript">
function doclick() {
  document.getElementById('submit').click();
};
</script>

ทีนี้เมื่อต้องการ Submit จริงๆ ก็ต้องพิ่ง Javascript แล้วละครับ ด้วยการใช้ฟังก์ชั่น doclick() แนวคิดก็คือ ดัก event onclick ของ ปุ่มที่เราใช้เป็นปุ่ม Submit ซึ่งเมื่อมีการกดปุ่มก็ให้ไปทำการกดปุ่ม Submit อีกที เพียงเท่านี่ เราก็ป้องกันการ Submit โดยอัตโนมัติได้แล้วครับ