Jquery验证文本不能包含

时间:2016-11-24 14:20:59

标签: jquery validation

我正在尝试使用jQuery验证插件来动态验证一些文本字段。其中一条规则是该字段不能包含'http'。我如何修改validate()方法来实现这一目标?

@using (Html.BeginForm("UserDetails", "Account", FormMethod.Post, new {id = "registerform" }))
{
    <input id="Facebook" minlength="2" name="Facebook" placeholder="eg: Joe.Bloggs123" type="text" value>
    ...
}

<script>
    $('#registerform').validate({
        // ...?
    })
</script>

编辑:我尝试添加了validator.addmethod,但它仍然不起作用。这就是我在脚本中的内容:

 $('#registerform').validate();

jQuery.validator.addMethod("Facebook", function(value, element) {
            return this.optional(element) || (value.indexOf('http') >= 0);
        }, "*Please just use your userid, not the full url");

另外我需要验证很多这些,是不是可以添加自定义类并从中进行选择?

2 个答案:

答案 0 :(得分:3)

以下是最终对我有用的内容:

<script>
    jQuery.validator.addMethod("checkhttp", function(value, element) {
                        return this.optional(element) || (value.indexOf('http') < 0) && (value.indexOf('www') < 0);
                    }, "*Please just use your userid, not the full url");

                    jQuery.validator.classRuleSettings.checkhttp = { checkhttp: true };

                $('#registerform').validate();
</script>

@using (Html.BeginForm("UserDetails", "Account", FormMethod.Post, new {id = "registerform" }))
{
     <input id="Facebook" class="checkhttp" name="Facebook" placeholder="eg: Joe.Bloggs123" type="text" value>
}

答案 1 :(得分:-1)

这是针对你的情况,但我建议你使用正则表达式

 if( $('#Facebook').val().indexOf('http') >= 0 ) {
  alert('Contains http');
 } else {
  alert('Doesn't contain http');

修改 对不起,我还没有正确地阅读这个问题。

添加jQuery验证器

jQuery.validator.addMethod("DoesNotContain", function(value, element)
{
    return this.optional(element) || (indexOf('http') < 0);
}, "* Can't contain http");