【发布时间】:2018-02-15 13:29:14
【问题描述】:
我正在使用 ASP.NET + C# + Javascript 开发一个应用程序,并且我正在使用条形码扫描仪来读取标签中的条形码。
此扫描仪在完成阅读时会自动“回车”,但在我的应用程序中,每次按回车键时,页面都会重新加载并返回主视图。
我有一个禁用回车键的功能,但我需要在特定页面中使用触发器,当扫描仪完成或按下回车时,调用 Button_Click 事件。
这是我禁用回车键的功能:
<%--Script Disable Key Enter--%>
<script type="text/javascript">
$(document).ready(function () {
$('input').keypress(function (e) {
var code = null;
code = (e.keyCode ? e.keyCode : e.which);
return (code == 13) ? false : true;
});
});
</script>
<%--end function--%>
请记住,我正在使用扫描仪读取条形码,读取后,它“按下”回车键,我需要使用此事件“按下”来调用另一个函数,即 Button_Click。
有可能重复,但另一个问题不能解决我的问题。 尝试使用此代码后:
<script type="text/javascript">
$(function () {
$("#<%=SSCC_barcodeReader.ClientID%>").keypress(function () {
$("#<%=BarCodeReader.ClientID%>").click();
});
});
</script>
<script type="text/javascript">
$(document).on("keypress", 'form', function (e) {
var code = e.keyCode || e.which;
if (code == 13) {
e.preventDefault();
return false;
}
});
</script>
按键盘任意键后页面仍然提交。 然后我为我的问题开发了一个解决方案太简单了。
<script type="text/javascript">
$(function () {
$("#<%=SSCC_barcodeReader.ClientID%>").keypress(function (e) {
var code = e.keyCode || e.which;
if (code == 13) {
setTimeout(function () {
$("#<%=BarCodeReader.ClientID%>").click();
}, 500)
clearTimeout(setTimeout);
}
})
});
</script>
<script type="text/javascript">
$(document).on("keypress", 'form', function (e) {
var code = e.keyCode || e.which;
if (code == 13) {
e.preventDefault();
return false;
}
});
</script>
第一部分我在我的 TextBox 中获得了 keypress 事件,然后我验证按下的键是否是 ENTER 并在 500 毫秒后执行 .click,因为我的扫描仪会在完成输入之前发送确认。
第二部分是防止返回初始页面。
【问题讨论】:
-
这不是默认行为,所以我猜你这里有其他代码干扰。请为您的问题创建一个Minimal, Complete, and Verifiable example
-
请分享一个完整的例子,代码等来帮助你:-)。
-
将事件绑定到您的表单提交并阻止默认操作,这样您就可以在不重新加载页面的情况下做您想做的事情
-
@MikeMcCaughan 我看过这篇文章,但没有解决我的问题。因为这个我创建了一个新的。
标签: javascript asp.net