在文本框上阻止页面提交?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (9)

我正在做类似于远程验证的事情,除了我已经通过jquery手动完成我的调用并设置了我必须设置的任何设置。

现在我的问题是,如果我想告诉验证器一个特定的文本框无效(并阻止页面提交,突出显示文本框等)。我如何从代码中做到这一点?

@Html.LabelFor(m => Model.Slug)
@Html.TextBoxFor(m => Model.Slug)
<span id="UrlMsg" class="field-validation-error" style="display: none;"></span>

 if (error) {
        $('#UrlMsg').html('This name is already in use.').fadeIn('fast');
        //what should I do here for the rest of the validation?
 }
提问于
用户回答回答于

你也可以这样做:

@Html.ValidationMessageFor(m => m.Slug)

在你的代码中使用这个函数:

function setError(id, message) {
        var span = $("span[data-valmsg-for=\"" + id + "\"]");
        if (span && span.length > 0) {
            $(span).html(message);
            if (message && message != "") {
                $(span).removeClass("field-validation-valid");
                $(span).addClass("field-validation-no-valid");
            } else {
                $(span).removeClass("field-validation-no-valid");
                $(span).addClass("field-validation-valid");
            }
        }
    }

然后可以设置错误

setError("Slug", "errorMsg");
用户回答回答于

首先,可以添加验证摘要:

@Html.ValidationMessageFor(m => m.Slug)

然后,可以使用.showError方法手动触发jQuery验证。示例:

var errorArray = {};
errorArray["Slug"] = 'Some error message for the Slug text box';
$('#SomeFormId').validate().showErrors(errorArray);

扫码关注云+社区