A-AA+then

ว่าด้วยเรื่องฟอร์มกับ barcode ครับ

1,882
พอดีตอนนี้ได้โจทย์ใหม่มาว่า คือ จนท. ไม่อยากกรอก id ของตัวอย่างเอง แต่อยากยิง barcode ในช่องกรอกเลย โดยเมื่อยิง barcode แล้วจะได้ผลลัพธ์เป็น id นั้นๆ ครับ เช่น A55-001 อะไรประมาณนี้

แต่ปัญหาคือว่า barcode ที่ผมทำออกมาตอนนี้ (2D barcode) มันจะมีคำสั่ง enter ติดมาด้วย เพราะใช้กับระบบ database และเป็นข้อจำกัดที่มีตั้งแต่แรกครับ ดังนั้นเวลายิง barcode ลงในช่องกรอกนั้นก็จริง แต่มันดันไปกลายเป็นคำสั่ง กดปุ่ม submit ของฟอร์มเลย โดยที่ยังไม่ได้กรอกข้อมูลอื่นๆ  

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

ปล. ไอเดียที่นึกออกตอนนี้คือ มีหน้าฟอร์มให้ยิง barcode 1 ฟอร์มก่อน โดยมีแค่ช่องให้ยิง barcode อย่างเดียวเลย แล้วค่อยส่งค่า id ไปยังหน้าใหม่อีกฟอร์มนึง จากนั้นค่อยกรอกรายละเอียดอื่นๆ ต่อน่ะครับ

8 ความคิดเห็น

เพิ่มเติมครับ ที่นึกออกอีกอันคือ submit form แรกแล้วให้อีกฟอร์มปรากฏออกมาในหน้าเดียวกันนั้นเลย 
น่าจะทำประมาณไหนครับ 

กำลังนั่งหาบทความที่เกี่ยวข้องอยู่ แต่นึกคำค้นไม่ออก 555++

ปล. อีกที เดี๋ยวพอเสร็จอันนี้จะเอาโค้ดที่ปรับและใช้งานได้ไปเขียนที่ blog นะครับ กันผมลืม และเผื่อคนอื่นอยากใช้แบบอย่างที่ผมใช้ด้วย
1

    ดูบทความเน้อ เขียนสดๆร้อนๆเลย
    
    (เขียนโดยไม่ใช้ Framework นี่มันยากกว่าที่คิดแฮะ)
    
     

2

ขอบคุณค้าบ

แหล่มเชี่ยว ทีนี้ก็ไม่ต้องยุ่งยากหลายหน้าละ

ปล. เดี๋ยวขอลองก่อนนะครับว่ามันส่งค่าเป็น return(13) หรือเปล่า
3

1.การที่ Enter ออกมา ออกมาจาก Barcode หรือตัวแสกนแน่ครับ ลองตรวจสอบดูก่อนนะครับ เพราะว่าโดยปกติ เครื่องแสกนส่วนใหญ่จะมี Tab หรือ Enter ออกมาด้วย แล้วแต่ว่ากำหนดให้เป็นอย่างไร หรือจะให้ไม่มีเลยก็ได้ 

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()"/>
4

ขอบคุณครับ สรุปแล้วโค้ดในบทความใช้ได้

เดี๋ยวไงจะลองเอาของอีกท่านไปทดสอบดูนะครับ คิดว่าน่าจะเป็นประโยชน์ในอนาคต
5

แหะๆ มีปัญหาอีกนิด

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 แล้ว แต่มันก็ยังไม่ทำงานน่ะครับ
6

ลองดูบทความนะ ผมแก้ไขให้แล้ว
7

ขอบคุณมากครับ
8
^