我现在面临的问题是在Html.TextBoxFor()中按下回车键时会自动触发按钮点击事件。我有一个主要观点。在此视图中有3个按钮。在每个2按钮上单击打开局部视图,在第三个按钮单击期间,将打开一个新视图。请参阅以下代码:
<script>
$(document).ready(function () {
SetUpDatePickers();
});
$('#button1').click(function (event) {
$('#divdefinetraj').toggle();
$('#button1').hide();
$('#button2').hide();
$('#button3').hide();
event.preventDefault();
GetTrajectories();
});
$('#button2').click(function (event) {
$('#divRequestTT').toggle();
$('#button1').hide();
$('#button2').hide();
$('#button3').hide();
event.preventDefault();
});
$('#button3').click(function (event) {
window.location.href = '/UserManagement/UsersList/';
event.preventDefault();
});
</script>
我点击了button1并打开了第一个局部视图:
部分视图的代码如下:
@Html.TextBoxFor(u => u.TrajName, new { @class = "txtboxclass", @id = "TrajName" })
我的问题是当我按下#34;输入&#34;在此文本框内的键,主视图中button1的代码正在执行:
$('#button1').click(function (event) {
$('#divdefinetraj').toggle();
$('#button1').hide();
$('#button2').hide();
$('#button3').hide();
event.preventDefault();
GetTrajectories();
});
这导致所有按钮被隐藏,除非用户有力地重新加载视图,否则视图将变得无用。
我尝试处理textboxfor的onchange()
事件并重定向到下面的函数,但它无法处理。
function EnterKeyFilter() {
if (window.event.keyCode == 13) {
event.returnValue = false;
event.cancel = true;
}
}
即使我尝试了相同的功能div - click()..它不起作用。
当我按下回车键时,正在使用此信息event = j…y.Event {originalEvent: MouseEvent, type: "click", timeStamp: 7055.025000000001, jQuery110208686809991100928: true, toElement: button#button1
处理确切的button1点击。
但我也没有点击它。部分视图也不是表单的一部分,表单提交不是问题。我是ASP.NET MVC的新手,并且对这种奇怪的行为感到困惑。请帮忙。提前谢谢。
答案 0 :(得分:0)
尝试将所有三个按钮保存在不同的表单标签中并使其成为提交按钮。 因此,在这种情况下,无论何时按下输入表单输入,都会单击相应的按钮。要防止整页回发,请在按钮单击事件中使用e.preventDefault()。
HTML:
<form id="frm1">
-------------
-------------
<input id="btnSubmit" type="submit" value="submit" />
</form>
的jQuery
$("#btnSubmit").click(function(e){
e.preventDefault();
-- rest of code
});
答案 1 :(得分:0)
如果您要禁用按键输入键盘,请尝试以下操作:
$(function () {
//On your document ready function, add this:
$('html').bind('keypress', function (e) {
if (e.keyCode == 13) {
return false;
}
});
}