在Javascript中模拟按键不使用jquery

时间:2015-03-30 19:51:37

标签: javascript focus

您好我想模拟用户点击输入框。 脚本是:

function prepareToScan(){
    $("fireRegAdd").focus();
    $('fireRegAdd').keypress();
}

和HTML

 <h2>Add a visitor to today's fire register</h2>
 <input type="button" onmousedown="prepareToScan()" value="Add Visitor">
 <input id="fireRegAdd" name="fireRegAdd">
 </div>

我有一个条形码扫描器,可以将代码放入输入框,但只有当它被“点击”时。我已经尝试过.focus()但它需要两次扫描才能让扫描工作。焦点与实际点击框中的焦点不同。有谁知道怎么做?

感谢

所以我发现,如果我添加一个警报,它会正确设置:

function prepareToScan(){
    alert("ready to scan");
    $("fireRegAdd").focus();
    $('fireRegAdd').keypress();


}

但我真的不想要一个警告框

我添加了代码演示。单击按钮时,我希望输入框中有一个闪烁的光标。

function prepareToScan(){
  
	$("#fireRegAdd").focus();
	$('#fireRegAdd').click();

}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div>

<h2>Add a visitor to today's fire register</h2>
<input type="button" value ="Add Visitor" onmousedown="prepareToScan()"/>
<input id="fireRegAdd" name="fireRegAdd" value="" />
</div>

1 个答案:

答案 0 :(得分:0)

我发现几乎不可能将注意力集中在输入框上,以便光标闪烁。我尝试了一切,包括操纵光标位置和使用click事件。

然而,我确实解决了我的问题。条形码扫描仪就像键盘一样。所以我写了一些检测键盘输入的代码。它检查传入的密钥。如果它在250毫秒内收到超过3个,则认为它来自扫描仪。工作一种享受。它易于修改以适应不同的应用。这是我最终得到的javascript代码。为了使它工作,你需要一个ID =&#34;条形码&#34;希望有人觉得它很有用。

var chars = []; 
var pressed = false; 
window.addEvent( 'keydown', function( evt ){
   //console.log(evt.key);
        chars.push(evt.key);
        setTimeout(function(){
        if (chars.length >= 3) {
            var barcode = chars.join("");
            $("barcode").value= barcode;
        }
        chars = [];
        pressed = false;
        },250);
});