Javascript 如何在运行条形码扫描仪时阻止表单提交

Javascript 如何在运行条形码扫描仪时阻止表单提交,javascript,coldfusion,Javascript,Coldfusion,当使用条形码扫描仪将文本输入突出显示的字段时,我试图阻止表单提交。当我按下扫描仪上的按钮时,它会自动尝试使用表单中更高优先级的提交按钮进行提交。我曾尝试在javascript中使用ignore函数,但找不到扫描仪的关键代码值。有没有一种方法可以设置不同提交按钮的优先级而不必重新排列它们?这是我在代码中设置按钮的方式: <li> <cfinput type="submit" name="add" value="Enter Package">

当使用条形码扫描仪将文本输入突出显示的字段时,我试图阻止表单提交。当我按下扫描仪上的按钮时,它会自动尝试使用表单中更高优先级的提交按钮进行提交。我曾尝试在javascript中使用ignore函数,但找不到扫描仪的关键代码值。有没有一种方法可以设置不同提交按钮的优先级而不必重新排列它们?这是我在代码中设置按钮的方式:

    <li>
        <cfinput type="submit" name="add" value="Enter Package">
    <cfinput type="submit" name="search" value="Search">                
    <cfinput type="submit" name="reset" value="Reset">
</li>
    </ul>       
</td>
<td>                
        <center><div id="labelImageDiv">
        <img id="labelImage" src="" alt="label preview"/>
    </div>
<ul>
        <li>
           <label for="printersSelect" class="left">Printer:</label>
        <select id="printersSelect" class="right"></select>
        <button id="printButton">Print</button>
    </li>
    <li>
    <div class="packHead">Package Pickup</div>                          
        <label for="pickup" class="left">Scan Barcode:</label>
        <div class="right">
        <cfinput type="text" name="pickup">
    </div>
    </li>
    <li>
    <div id="pickButton">
        <cfinput type="submit" name="pkgPickup" value="PickUp">
    </div>
    </li>
</ul>
    • 打印机: 印刷品
    • 包裹提取 扫描条形码:

    大多数扫描仪允许您对扫描过程中发送的字符进行编程。您通常可以在线找到扫描仪的型号手册,下载它,然后扫描正确的编程代码,以使扫描发送您想要的内容。

    如果扫描仪正在输入文本框,请隐藏提交按钮启动表单。仅当文本框有数据时才显示它。这是用javascript完成的,而不是ColdFusion。

    我投票赞成ExistDisle的答案,因为扫描仪应该是可配置的

    但是,一个非常简单的javascript解决方案是在提交时返回false,除非实际单击了submit按钮,从而允许提交表单。像这样的--

    var p=false;
    
    迄今为止我找到的最佳解决方案

    $(":input").keypress(function(event){
        if (event.which == '10' || event.which == '13') {
            event.preventDefault();
        }
    });
    

    只需添加这个HTML数字过滤器

    <input type="text" id="bcvalue" name="barcodedata" value = "" onkeypress="return (event.charCode > 47 && event.charCode < 58)">
    
    
    

    为我的iPad资产控制应用程序工作得很好

    将输入类型设置为按钮。扫描完成后,将其更改为提交。

    扫描条形码的数据将流向何处?只需扫描到页面上的文本框中,这样他们就不必键入。可能需要添加一个提交处理程序,然后查看触发它的event.target是什么。我将按照下面的建议对条形码扫描仪进行编程,但是,您也可以在实际单击按钮时使用JavaScript提交表单,而不是在没有实际提交按钮的情况下使用JavaScript提交表单。当条形码扫描仪或用户按下enter键时,表单将不会提交,这并不完全正确。Chrome和Firefox(至少是最新版本,在Mac上…我测试过的唯一地方…)将在文本字段中按enter键时提交表单,无论是否有提交按钮。因此,除非您专门在一个您知道所使用的浏览器将以这种方式运行的环境中工作,否则唯一合理的解决方案是1.)使用JavaScript阻止提交,或2.)重新编程扫描仪,使其不随扫描一起提交返回字符。尽管如此,我认为扫描仪仍会提交表单,因为大多数配置为通过扫描文本加上返回字符发送。
    <input type="text" id="bcvalue" name="barcodedata" value = "" onkeypress="return (event.charCode > 47 && event.charCode < 58)">