标签: jquery-validate

不显眼的验证忽略data-val属性,但使用class ="required"

我有以下观点:

@using (Html.BeginForm())
{
    <div class="left-column">
        @Html.LabelFor(m => m.Expression)
        @Html.TextAreaFor(m => m.Expression, new { @spellcheck = "false" })
        @Html.EditorFor(m => m.Sku)
    </div>
}
Run Code Online (Sandbox Code Playgroud)

使用以下JavaScript在计时器上每秒运行一次:

$("form").validate();

if ($("form").valid()) {
    //...
}
Run Code Online (Sandbox Code Playgroud)

为文本区域元素生成以下html(唯一需要验证的元素):

<textarea 
    data-val="true"
    data-val-required="The Expression field is required."
    cols="20" rows="2"
    id="Expression" name="Expression"
    spellcheck="false">
</textarea>
Run Code Online (Sandbox Code Playgroud)

问题是验证没有做任何事情,除非我使用浏览器工具手动添加class ="required".如果我执行此验证工作并显示错误消息"需要表达式字段".确切地说"$("form").valid()"即使textarea为空,也总是返回true.由于我使用的是自动生成data-val属性的anotations,我想依赖它们.我究竟做错了什么?

仅供参考我的脚本参考如下:

<script src="/Scripts/modernizr-2.0.6-development-only.js" ...
<script src="/Scripts/jquery-1.6.2.js" ...
<script src="/Scripts/Parser.js" ...
<script src="/Scripts/jquery.unobtrusive-ajax.js" ...
<script src="/Scripts/jquery.validate.js" ...
<script src="/Scripts/jquery.validate.unobtrusive.js" ...
Run Code Online (Sandbox Code Playgroud)

jquery html5 jquery-validate razor unobtrusive-validation

5
推荐指数
1
解决办法
4175
查看次数

您在涉及许多子视图的复杂表单中使用哪些模式进行表单验证

Backbone中的验证

我正在使用Backbone构建一些复杂的表单.如果我要对我所拥有的观点类型进行分类,我会说我有模型视图和集合视图.其中模型视图表示单个实体信息,而集合视图表示重复表单(例如,创建多个登录).

我使用模型绑定器插件进行双向绑定,表单工作正常,但我没有实现任何客户端验证.我正在考虑进行模型验证路线但是我意识到我希望客户端验证的原因是显示消息并告知用户更常见的错误,而不是实际确保数据的完整性,因为这是由服务器完成的.

我有兴趣听听关于哪种方法是好的任何模式/想法.

如果有任何帮助,我已经有jquery验证.

validation jquery jquery-validate backbone.js backbone-views

5
推荐指数
1
解决办法
325
查看次数

jQuery验证 - 在运行时更改max的值

我有这些验证规则:

$("#ed_details").validate({
    rules: {
        tagno: { required: true },
        itemid: { required: true },
        ralno: { required: true },
        feet: { required: true, number: true, min: 0 },
        inches: { required: true, number: true, min: 0 },
        cms: { required: true, number: true, min: 0 },
        length: { required: true, number: true, max: $('#maxlength').val() },
        qty: { required: true }
    }
});
Run Code Online (Sandbox Code Playgroud)

这是长度验证的字段.它仅用于测试目的的文本.一旦这个工作,它将被隐藏.

<input type="text" name="maxlength" id="maxlength" value="<?=$maxL['ml']?>" />
Run Code Online (Sandbox Code Playgroud)

除非我在运行时更改maxlength的值(这可能发生),否则这样可以正常工作.用户正在从下拉列表中选择项目.每个项目都有一个可以与之一起使用的最大管道长度.当项目更改时,maxlength的值会在屏幕上更改.但是,当验证运行时,我会看到一条基于原始长度的错误消息(对于新项目为0,无论编辑时加载的maxlength是多少).

Please enter a value less than or equal to 156. …
Run Code Online (Sandbox Code Playgroud)

jquery jquery-validate

5
推荐指数
1
解决办法
9264
查看次数

使用jQuery验证设置div的验证

我正在使用jQuery validation plugin,用于表单验证.但是我无法为a设置验证div.

这是我到目前为止所尝试的

HTML:

<form id="form">
  <div id="location" name="location"></div>
</form>
Run Code Online (Sandbox Code Playgroud)

JS:

$('#form').validate({
            rules: {
            isLocationEmpty: true;
            }
});
Run Code Online (Sandbox Code Playgroud)

CustomValidation Mehthod:

$.validator.addMethod('isLocationEmpty', function (value, element) {        
    var loc = $('#location').text();
    return (loc != "")
}, 'REQUIRED.');
Run Code Online (Sandbox Code Playgroud)

我之前没有这样做,请提供您的建议.

jquery jquery-validate

5
推荐指数
1
解决办法
2万
查看次数

来自jQuery Validate远程的错误响应无法正常工作

我正在使用jQuery Validationremote方法来检查系统中是否已存在用户名.如果用户存在,脚本将返回.does_user_exist.php1

$registration.find(".username").each(function() {
    var $this = $(this);
    $this.rules('add', {
        remote: {
            url: "does_user_exist.php",
            type: "post",
            dataType: "json",
            data: {uname: function(){ return $this.val(); } },
            async: false,
            success: function (data) { //returns 1 if user exists
                if (data) {
                   console.log("false!");
                   return "Sorry, that user already exists." //doesn't work
                   //return false;        //doesn't work
                   //return data;         //doesn't work
                   //return {"string"};   //doesn't work
                   //return {0: "string"};//doesn't work
                } else {
                   console.log("true!");
                   return true;
                }
            }
        },
        messages: …
Run Code Online (Sandbox Code Playgroud)

jquery jquery-validate

5
推荐指数
1
解决办法
1万
查看次数

jQuery验证插件:没有选择,无法验证,什么都不返回

我有一个包含超过80个js文件的大型Rails项目,我一直在Chrome的控制台中收到此消息:

Nothing selected, can't validate, returning nothing. 
Run Code Online (Sandbox Code Playgroud)

不过,我无法弄清楚是什么抛出了这个消息.我正在使用验证插件的所有表单似乎都正确验证了它们应该如何.

如何追溯以查看实际导致此消息出现的文件或函数?

以下是验证插件的相关部分:

  // if nothing is selected, return nothing; can't chain anyway
  if ( !this.length ) {
    if ( options && options.debug && window.console ) {
      console.warn( "Nothing selected, can't validate, returning nothing." );
    }
    return;
  }
Run Code Online (Sandbox Code Playgroud)

似乎在一个不存在的选择器上调用了validate(),但我在整个项目的数百个地方调用了validate(),这就是为什么我正在寻找一种方法来跟踪对validate()的确切调用方法.

jquery ruby-on-rails jquery-validate

5
推荐指数
2
解决办法
4501
查看次数

jquery验证需要单击提交两次才能提交表单

我有一个模态的表单,用户必须填写表单(否则验证将显示所需的字段错误消息),然后单击提交输入类型,它什么都不做,然后再次单击它,然后它将通过ajax发布,并返回"谢谢"消息.

我查看了Stackoverflow并应用了我遇到的问题的答案,但我仍然无法让它工作.我确实删除了event.preventDefault(); 从中,以及$("#检讨形式").提交(函数(事件){和表单提交像它应该点击提交一次输入后,但它不会发布到数据库.

下面是#review-form的jQuery

$("#review-form").validate({
    submitHandler: function () {
        $("#review-form").submit(function (event) {
            var rating = $(this).find('input[name=rating]');
            // var rating = $(this).find('input[name=rating]').val();
            var review = $(this).find('textarea[name=review]');
            var form_settings = $(this).find('input[name=form_settings]');
            var xid = $(this).find('input[name=XID]');
            var entry_id = $(this).find('input[name=entry_id]');
            var entry_type = $(this).find('input[name=entry_type]');
            var site_id = $(this).find('input[name=site_id]');
            var first_name = $(this).find('input[name=first_name]');
            var middle_initial = $(this).find('input[name=middle_initial]');

            $.ajax({
                url: $("#review-form").attr("action"), //your server side script
                data: $(this).serialize(),
                type: 'POST',
                success: function (data) {
                    //$('#response').append('<li>' + data + '</li>');
                    $('#review-form').hide();
                    $('#review-form-response').html("<h3 style='text-align:center;'>Thank you, your review was …
Run Code Online (Sandbox Code Playgroud)

forms ajax jquery jquery-validate

5
推荐指数
1
解决办法
5969
查看次数

JQuery Validation和Bootstrap 3用于相同的表单组

我有一个关于"has-error"类和复杂对象的问题.

基本上对于单个简单类型,它工作得很好,但对于复杂的对象,它没有.

我有以下代码:

我的验证:

public static MvcHtmlString ValidationErrorFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string error)
{
    if (HasError(htmlHelper, ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData), ExpressionHelper.GetExpressionText(expression)))
        return new MvcHtmlString(error);
    else
        return null;
}


private static bool HasError(this HtmlHelper htmlHelper, ModelMetadata modelMetadata, string expression)
{
    string modelName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(expression);
    FormContext formContext = htmlHelper.ViewContext.FormContext;
    if (formContext == null)
        return false;

    if (!htmlHelper.ViewData.ModelState.ContainsKey(modelName))
        return false;

    ModelState modelState = htmlHelper.ViewData.ModelState[modelName];
    if (modelState == null)
        return false;

    ModelErrorCollection modelErrors = modelState.Errors;
    if (modelErrors == null)
        return false;

    return (modelErrors.Count …
Run Code Online (Sandbox Code Playgroud)

validation jquery jquery-validate twitter-bootstrap-3

5
推荐指数
1
解决办法
3690
查看次数

检查表单验证是否为真

您好我有一个表单,我想通过表单验证运行,然后提交.如何检查以下函数是否返回true以了解所有内容是否已经过验证然后提交?

我创造了一个小提琴来测试

http://jsfiddle.net/WHGq2/

修改后的代码

     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
     <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>

    <script type="text/javascript">
            $(function(){
        $("#form").validate({
            debug: false,
            rules: {
                name: "required",
                email: {
                    required: true,
                    email: true
                        },
                phone: {
                    equired: true,
                    phone: true
                        }
                    },
            messages: {
                name: "Please let us know who you are.",
                email: "A valid email will help us get in touch with you.",
                phone: "Please provide a valid phone number.",
            }
        })  


    $('#form').submit(function(e){
        // Stop the form actually posting
        e.preventDefault();




        // I want to be able to …
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-validate

5
推荐指数
2
解决办法
2万
查看次数

jQuery验证电子邮件验证问题

我正在尝试排除故障并修复我的电子邮件验证无法正常工作的原因.假设检测到无效的电子邮件:它有太多......(点),除了欧洲地址(test@tom.uk.tk)以及test@aol.com之外.但是现在它除了一个点外,如果只要你没有添加(.)点就没有完成打字,只要它有@.有人请帮我解决我的错误吗?

<script>
     $("#form").validate({
    rules: {
        firstname_1: {
            required: true
        },
        email_1: {
            required: true,
            email: true
        },
        // Same for other fields
    },
    messages: {
        firstname_1: "This field is required.",
        email_1>: "Please enter valid email address.",
        // Repeat for other fields
    }
});
function isValidEmail(email_1)
{
    return /^[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,4}$/.test(email_1)
        && /^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*/.test(email_1);
}
</script>
Run Code Online (Sandbox Code Playgroud)

regex jquery jquery-validate

5
推荐指数
1
解决办法
3041
查看次数