如何在MVC中捕获jQuery验证事件

时间:2013-11-18 15:59:27

标签: jquery asp.net-mvc

我有一个允许用户输入值的表单,该值应该是一个数字。我正在使用 ValidationMessageFor 来提供验证测试。我还添加了一个函数来在单击后禁用提交按钮。如果用户输入文本值然后单击“提交”,则该按钮将被禁用,并且无法再次单击该按钮。

如何在jQuery评估发生时捕获事件,以便我可以在那时重新启用按钮?

<script>
    function setOneClick(buttonName) {
        $('[name="' + buttonName + '"]').click(function () {
            console.log("save");
            var self = this;
            setTimeout(function () { $(self).prop('disabled', true); });
        });
    }

    $(document).ready(function () {
        setOneClick("prevStep");
        setOneClick("saveStep");
        setOneClick("nextStep");
    });
</script>

@Html.EditorFor(Function(m) m.Value)
@Html.ValidationMessageFor(Function(m) m.Value)

@<input type="submit" name="prevStep" value="Previous" />
@<input type="submit" name="saveStep" value="Save" />
@<input type="submit" name="nextStep" value="Next" />

@Section Scripts
    @Scripts.Render("~/bundles/jqueryval")
End Section

1 个答案:

答案 0 :(得分:0)

 @using (Ajax.BeginForm("Action", "Controller",
                                   new AjaxOptions { HttpMethod = "POST"}, 
                                   new { id = "formId" }))
            {
@Html.EditorFor(Function(m) m.Value)
@Html.ValidationMessageFor(Function(m) m.Value)

  <input type="button" onclick="submitFormDisablebtn()"value="@Resource.Save" class="t-button" id="submitB"/>
}
<script type="text/javascript">
    function submitFormDisablebtn() {
        var validForm = jQuery("#formId").valid(); //if the model will be not valid the 
        //validation messages will be displayed.
        if (validForm == true) {     
            jQuery("#submitB").attr("disabled", "disabled");
            jQuery("#formId").submit();
        }
    }
</script>

希望你能理解它,这对你有所帮助。