处理用户在ASP.NET MVC网站中点击"Enter"键

osc*_*kuo 27 javascript asp.net asp.net-mvc jquery

我正在使用具有多个提交按钮的ASP.NET MVC网站.即

    <input type="submit" name="SubmitButton" value="Reset" />
    <input type="submit" name="SubmitButton" value="OK" />
    <input type="submit" name="SubmitButton" value="Back" />
Run Code Online (Sandbox Code Playgroud)

我需要允许用户通过按"Enter"键快速提交表单.HTML标准似乎指定如果用户按下"Enter"键,将假定第一个提交按钮.但是,我需要将第二个按钮(即"确定")按钮设为默认按钮,并且由于我甚至不想谈论的原因,更改按钮顺序不是一个选项.

我google了一下,我发现这篇文章关于在ASP.NET中使用Page.Form.DefaultButton,但这不适用于ASP.NET MVC.

我也尝试了以下javascript解决方案,虽然它可以在Chrome中运行但在IE6中不起作用

    $('body').keypress(function(e) {
       if (e.which === 13) {
          $("input[value='OK']").trigger('click');
       }
    });
Run Code Online (Sandbox Code Playgroud)

我可以想到一些非常极端的解决方案,例如遍历表单中的每个控件,将上述函数附加到它们上面.但是,我不认为这是一个非常简洁的解决方案,所以我想知道有没有人有更好的解决方案?

kar*_*m79 36

首先,这是错误的:

<input type="submit" name="SubmitButton" value="Reset" />
<input type="submit" name="SubmitButton" value="OK" />
<input type="submit" name="SubmitButton" value="Back" />
Run Code Online (Sandbox Code Playgroud)

所有这三个都是提交按钮.复位是type ="reset"的输入.得到那个排序.其次,我已经成功实现了类似的东西,它适用于IE6.试试这个:

    function keypressHandler(e)
    {
        if(e.which == 13) {
            e.preventDefault(); //stops default action: submitting form
            $(this).blur();
            $('#SubmitButton').focus().click();//give your submit an ID
        }
    }

    $('#myForm').keypress(keypressHandler);
Run Code Online (Sandbox Code Playgroud)

当用户按下回车键时,focus()部分会使按钮显示为按下.相当漂亮.


jit*_*ter 10

用这个.

$(function(){
    $('input').keydown(function(e){
        if (e.keyCode == 13) {
            $("input[value='OK']").focus().click();
            return false;
        }
    });
});
Run Code Online (Sandbox Code Playgroud)