在ASP.NET中使用不引人注目的JavaScript进行自定义验证

时间:2013-04-11 20:31:15

标签: jquery asp.net-mvc-3 unobtrusive-validation

我的表单中有一个文本框

<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;
    }
});

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

2 个答案:

答案 0 :(得分:0)

经过一番阅读后,我发现了两件事

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

    完成的

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

答案 1 :(得分:0)

使用内置ASP.NET MVC验证

在视图中创建具有验证和使用的模型。 您将进行客户端/服务器端验证。