在TextBoxFor Enter键按下期间自动触发按钮单击事件

时间:2016-11-22 09:05:00

标签: c# asp.net-mvc html5

我现在面临的问题是在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的新手,并且对这种奇怪的行为感到困惑。请帮忙。提前谢谢。

2 个答案:

答案 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;
            }
       });
}