在MVC3字段中按Enter键时阻止表单提交

时间:2013-12-08 10:50:48

标签: jquery ajax forms asp.net-mvc-3 validation

我有一个MVC3表单,上面有一个字段 - 我不希望表单实际提交,但是与ajax一起使用可以返回JSON数据以便在屏幕上显示。

我想使用ViewModel / Form,以便调用我的错误消息验证并显示得相当不错,我也可以调用远程验证。

但是,当用户在字段中输入数据时,他们可以按Enter键并提交表单 - 这些表单会发送到控制器并返回一个新的,清晰的页面:(

我试过禁用表单提交 - 但它似乎不起作用?

$(document).ready(function () {

    $('form').submit = function (e) {
        alert('submit');
         e.preventDefault();
        return false;
    };
.....

我也尝试将按钮移出表单,但(正如预期的那样)没有任何区别。

@using (Html.BeginForm())
    {
        @Html.ValidationSummary(true)
        <div>
            <span class="editor-label">@Html.LabelFor(model => model.AccountNumber)</span>
            <span class="editor-field">@Html.TextBoxFor(model => model.AccountNumber, new { @id = "accountNumber", size = "15" })
                @Html.ValidationMessageFor(model => model.AccountNumber)</span>
        </div>
    }
    <div>
        <button type="button" id="generate" class="generate">
            Generate</button>
    </div>

如何停止输入提交表单?

2 个答案:

答案 0 :(得分:2)

试试这个

@Html.TextBoxFor(model => model.AccountNumber, new { @id = "accountNumber", size = "15",onkeydown="return (event.keyCode!=13);" })

答案 1 :(得分:1)

你可以使用它(在括号上替换'='):

$('form').submit(function(e) {
    alert('submit');
    e.preventDefault();
    return false;
});

这对我有用