【问题标题】:validate input only if the input box is not empty仅在输入框不为空时验证输入
【发布时间】:2012-12-26 05:30:07
【问题描述】:

我有一个不需要验证的文件输入框。但是如果输入框不为空,那么我希望执行文件类型和文件大小的验证。

jQuery(document).ready(function(){

jQuery.validator.addMethod("accept", function(value, element, param) {
    return value.match(new RegExp("." + param + "$"));
});

jQuery.validator.addMethod('filesize', function(value, element, param) {
    return this.optional(element) || (element.files[0].size <= param) 
});


jQuery('#adminform').validate({

    rules: {

        resume: {
                required: false,
                accept: "(doc|docx|pdf)",
                filesize: 1024 //1048576
        }
    },
......................
    resume: {
        accept: "File type not supported",
        filesize: "File cannot be more than 1MB!"
    },

现在的问题是,即使我不提供任何输入并将其留空,我也会执行 "accept" 规则,即我收到消息 "File type not支持”

【问题讨论】:

  • 这里的事情是我不想强制该字段,我只想在用户上传文件时验证输入
  • 在该输入文件字段的更改事件中使用。
  • $("input[type=file]").on("change", function() { $(this).validate({ }); });
  • 我很抱歉,但我只是想知道在我的情况下我必须把这条线放在哪里,我对 jquery 很陌生,我对验证插件有点了解

标签: php jquery joomla2.5


【解决方案1】:

试试这个..非空检查确保如果字段留空,则不会执行验证

$('input[type="file"]').on("change", function() { 
if ($this.val() !== '') { 
    //do validation stuff here!!
} 
});

【讨论】:

  • if ($this.val() !== '') { } 这是什么?如果输入发生了变化,它肯定会有一个值:)
【解决方案2】:

如果有帮助,试试这个:

$("#commentForm").validate({
rules: {
    name: "required",
    file: "required",
    name: {
        required: true,
        minlength: 2
    },
    file: {
        required: false,
        minlength: 5
    }
},
messages: {
    name: {
        required: "Please enter a username",
        minlength: "Your username must consist of at least 2 characters"
    },
    file: {
        required: "Please select a file",
        minlength: "Your password must be at least 5 characters long"
    }
},
submitHandler: function(form) {
    if ($('#cfile').val() != "") {
        $("#commentForm").validate({
            rules: {
                file: "required",
                file: {
                    required: true,
                    minlength: 5
                }
            },
            messages: {
                file: {
                    required: "Please select a file"
                }
            }
        });
        $(form).submit();
    } else {
        alert('file missing.');
    }
}

});

【讨论】:

  • 我使用了您的处理程序方法,但错误消失了,但我没有执行验证,我的意思是规则接受并且文件大小没有得到执行。
  • 你试过把它放在if ($('#cfile').val() != "") { 里面
猜你喜欢
  • 2018-01-05
  • 2014-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 2018-10-10
  • 1970-01-01
相关资源
最近更新 更多