基本上,当按下字段中只有一个charatcer的退格键或Escape字符时,我想清除该字段并更改按钮的名称。我知道条件已满足,因为按钮确实被重命名但字段拒绝被清除。如果我取消注释// alert('bou'),我的输入字段才会被重置。该按钮确实获得了“Scan”的新值,但输入仍然保留了我输入的值。我尝试使用.focus()但没有成功。
这是我在这里的第一篇文章,我试图满足您的所有标准,使其成为可接受的帖子。
感谢。
$("#inputBarcode").on("keydown", function(event){
//alert('bou');
if((event.which >=32 && event.which <=126) || //alphanumeric char
(event.which === 14) || //shift in
(event.which === 15) || //shift out
(event.which >= 37 && event.which <= 40) || //arrow key
(event.which === 127)){ //delete
$("#scanButton").text("Save");
}else if((event.which === 27) || (event.which === 8 && $(this).val().length === 1)){
$(this).val('');
$("#scanButton").text("Scan");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label id="labelMaterialBarcode" class="floatLeft">Material barcode
<div id="itemBarcode" role="cotg.Barcode">
<input id="inputBarcode" class="inlineBlock" role="barcode-data" name="itemBarcode" type="text">
<button id="scanButton" class="small inlineBlock floatRight" role="scan-button" type="button">Scan</button>
</div>
</label>
答案 0 :(得分:0)
问题是,keydown
事件在输入值发生变化之前被触发。
您可以改为使用keyup
事件。