การป้องกันบาร์โค้ด 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 โดยอัตโนมัติได้แล้วครับ


 

ผู้เขียน goragod โพสต์เมื่อ 07 ก.พ. 2555 เปิดดู 13,908 ป้ายกำกับ FormJavascript
^