ว่าด้วยเรื่องฟอร์มกับ barcode ครับ
พอดีตอนนี้ได้โจทย์ใหม่มาว่า คือ จนท. ไม่อยากกรอก id ของตัวอย่างเอง แต่อยากยิง barcode ในช่องกรอกเลย โดยเมื่อยิง barcode แล้วจะได้ผลลัพธ์เป็น id นั้นๆ ครับ เช่น A55-001 อะไรประมาณนี้
แต่ปัญหาคือว่า barcode ที่ผมทำออกมาตอนนี้ (2D barcode) มันจะมีคำสั่ง enter ติดมาด้วย เพราะใช้กับระบบ database และเป็นข้อจำกัดที่มีตั้งแต่แรกครับ ดังนั้นเวลายิง barcode ลงในช่องกรอกนั้นก็จริง แต่มันดันไปกลายเป็นคำสั่ง กดปุ่ม submit ของฟอร์มเลย โดยที่ยังไม่ได้กรอกข้อมูลอื่นๆ
เลยอยากจะรู้ว่า ท่านใดพอจะมีไอเดียว่า สร้าง form ยังไงไม่ให้เวลายิง barcode แล้วยังไม่กด submit อัตโนมัติ แต่คนกรอกนั้นต้องกดปุ่ม submit เองน่ะครับ ก็หมายความว่ากรอกรายละเอียดในฟอร์มให้ครบก่อนแล้วค่อย submit น่ะครับ
ปล. ไอเดียที่นึกออกตอนนี้คือ มีหน้าฟอร์มให้ยิง barcode 1 ฟอร์มก่อน โดยมีแค่ช่องให้ยิง barcode อย่างเดียวเลย แล้วค่อยส่งค่า id ไปยังหน้าใหม่อีกฟอร์มนึง จากนั้นค่อยกรอกรายละเอียดอื่นๆ ต่อน่ะครับ
แต่ปัญหาคือว่า barcode ที่ผมทำออกมาตอนนี้ (2D barcode) มันจะมีคำสั่ง enter ติดมาด้วย เพราะใช้กับระบบ database และเป็นข้อจำกัดที่มีตั้งแต่แรกครับ ดังนั้นเวลายิง barcode ลงในช่องกรอกนั้นก็จริง แต่มันดันไปกลายเป็นคำสั่ง กดปุ่ม submit ของฟอร์มเลย โดยที่ยังไม่ได้กรอกข้อมูลอื่นๆ
เลยอยากจะรู้ว่า ท่านใดพอจะมีไอเดียว่า สร้าง form ยังไงไม่ให้เวลายิง barcode แล้วยังไม่กด submit อัตโนมัติ แต่คนกรอกนั้นต้องกดปุ่ม submit เองน่ะครับ ก็หมายความว่ากรอกรายละเอียดในฟอร์มให้ครบก่อนแล้วค่อย submit น่ะครับ
ปล. ไอเดียที่นึกออกตอนนี้คือ มีหน้าฟอร์มให้ยิง barcode 1 ฟอร์มก่อน โดยมีแค่ช่องให้ยิง barcode อย่างเดียวเลย แล้วค่อยส่งค่า id ไปยังหน้าใหม่อีกฟอร์มนึง จากนั้นค่อยกรอกรายละเอียดอื่นๆ ต่อน่ะครับ
น่าจะทำประมาณไหนครับ
กำลังนั่งหาบทความที่เกี่ยวข้องอยู่ แต่นึกคำค้นไม่ออก 555++
ปล. อีกที เดี๋ยวพอเสร็จอันนี้จะเอาโค้ดที่ปรับและใช้งานได้ไปเขียนที่ blog นะครับ กันผมลืม และเผื่อคนอื่นอยากใช้แบบอย่างที่ผมใช้ด้วย
ดูบทความเน้อ เขียนสดๆร้อนๆเลย
(เขียนโดยไม่ใช้ Framework นี่มันยากกว่าที่คิดแฮะ)
แหล่มเชี่ยว ทีนี้ก็ไม่ต้องยุ่งยากหลายหน้าละ
ปล. เดี๋ยวขอลองก่อนนะครับว่ามันส่งค่าเป็น return(13) หรือเปล่า
2.ใช้่่ script นี้เพื่อแก้ปัญหาครับ
function checkEnter(e){ //e is event object passed from function invocation
var characterCode //literal character code will be stored in this variable
if(e && e.which){ //if which property of event object is supported (NN4)
e = e
characterCode = e.which //character code is contained in NN4's which property
}else{
e = event
characterCode = e.keyCode //character code is contained in IE's keyCode property
}
if(characterCode == 0x0d){ //if generated character code is equal to ascii 13 (if enter key)
e.keyCode=0x09;
}
return;
}
function checkKeyNumber(e){
if(!((e.keyCode>=46)&&(e.keyCode<=57))){
alert("¡ÃسÒãÊèµÑÇàÅ¢")
return event.keyCode=0;
}
}
function check_number(ch){
var len, digit;
if(ch == " "){
return false;
len=0;
}else{
len = ch.length;
}
for(var i=0 ; i<len ; i++)
{
digit = ch.charAt(i)
if(digit >="0" && digit <="9" || digit =="." ){
;
}else{
alert("Input Number!");
document.getElementById("unit").value ="";
document.getElementById("unit").focus();
return false;
}
}
return true;
}
<input type="barcode" name="barcode" id="textfield" onKeyDown="checkEnter()"/>
เดี๋ยวไงจะลองเอาของอีกท่านไปทดสอบดูนะครับ คิดว่าน่าจะเป็นประโยชน์ในอนาคต
http://www.goragod.com/knowledge/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9B%E0%B9%89%E0%B8%AD%E0%B8%87%E0%B8%81%E0%B8%B1%E0%B8%99%E0%B8%9A%E0%B8%B2%E0%B8%A3%E0%B9%8C%E0%B9%82%E0%B8%84%E0%B9%89%E0%B8%94%20Submit%20%E0%B8%9F%E0%B8%AD%E0%B8%A3%E0%B9%8C%E0%B8%A1%E0%B8%AD%E0%B8%B1%E0%B8%95%E0%B9%82%E0%B8%99%E0%B8%A1%E0%B8%B1%E0%B8%95%E0%B8%B4.html?q=barcode
คือผมลองไปเปิดใน Firefox แล้วปุ่ม submit มันไม่ทำงาน มีวิธีให้ firefox ใช้งานได้ไหมครับ
เพราะเข้าไปเช็คดู option ของ firefox ก็เปิดการใช้งาน java แล้ว แต่มันก็ยังไม่ทำงานน่ะครับ