我有这段代码
<script>
$(document).ready(function () {
$('.InternalSearchKeyword').keyup(function () {
clearTimeout(typingTimer);
if ($('.InternalSearchKeyword').val) {
typingTimer = setTimeout(doneTypingKeyword, doneTypingInterval);
}
});
function doneTypingKeyword() {
alert('Hello');
debugger;
}
});
</script
我的问题是它在我尝试运行程序时触发2次,当我尝试在IE中调试它时我注意到脚本块再次加载javascript是否有一种可靠的方法来阻止脚本块触发脚本?我正在开发MVC 4。
当文档准备就绪时,javascript将加载。 并在加载后,scripblock将再次加载它,这就是为什么它会触发两个事件 当我有一个事件,它继续发射两次。
答案 0 :(得分:0)
我不熟悉ASP.NET,但如果代码因任何原因执行了两次,你可以修改jQuery来解释它:
$(document).ready(function () {
function handleSearchKeyword() {
clearTimeout(typingTimer);
if ($('.InternalSearchKeyword').val()) {
typingTimer = setTimeout(doneTypingKeyword, doneTypingInterval);
}
}
$('.InternalSearchKeyword').off('keyup', handleSearchKeyword).keyup(handleSearchKeyword);
function doneTypingKeyword() {
alert('Hello');
debugger;
}
});
这将删除运行该函数的keyup
处理程序(如果存在),然后绑定新的keyup
处理程序以执行该函数。因此,无论代码执行多少次,都只会有一个事件处理程序。