0

我的表单中有一个文本框

<div class="editor-label">
    <label>Job Title</label>
</div>
<div class="editor-field">
    <input data-val="true" data-val-required="JobTitle is required and cannot be blank" id="JobTitle" name="JobTitle" type="text" value="TBD" />
    <span class="field-validation-valid" data-valmsg-for="JobTitle" data-valmsg-replace="true"></span>
</div>

我添加了一个自定义验证器

<script>

        $.validator.addMethod('validjobtitle', function (value, element) {

            // Test 'value' for html here. 'value' is the value of the control being validated.
            if ($('#JobTitle').val() == "TBD") {
                alert("test");
                return false;
            }
            else return true; // Return true or false depending on if it passes or fails validation, respectively.
        }, 'Fix job Title');

        $.validator.unobtrusive.adapters.addBool('validjobtitle');
</script>

在其中一次单击按钮时,我验证了这样的元素

var validator = $("form").validate(); // obtain validator
var anyError = false;
$step.find("input,select").each(function () {
    if (!validator.element(this)) { 
        anyError = true;
    }
});

由于某种原因,我的自定义验证器无法正常工作。我究竟做错了什么?

4

2 回答 2

0

使用内置 ASP.NET MVC 验证

创建带有验证的模型并在您的视图中使用。您将获得客户端/服务器端验证。

于 2013-04-11T21:02:11.577 回答
0

经过更多阅读后,我发现了两件事

  1. 记住不要在 DOM 就绪处理程序中添加自定义验证器(即不要使用 $(document).ready() 或 $(function() { ... })) - 应该在文档准备好之前设置验证.
  2. 创建验证器并将其添加到适配器后,最重要的步骤是将其链接到要验证的元素。这是使用

    $(document).ready(function () { $('#JobTitle').rules('add', 'validjobtitle'); }

于 2013-04-11T20:57:46.233 回答