jquery.validate()触发一个事件来检查表单中的字段是否有效

时间:2014-06-03 23:23:50

标签: javascript jquery jquery-validate jquery-file-upload

即时通讯使用jquery验证,我想知道在调用所有字段的验证方法之前是否有办法只检查表单的一个字段的验证:

var validator = $("#form").validate();
validator.form()

我想这样做,因为当用户上传文件时,这个文件会自动上传到服务器,所以我想在将文件上传到服务器之前验证文件扩展名。

所以我希望有类似的东西:

在我的HTML中:

<input type="file" id="linkIcon" name="linkIcon" data-url="/server/upload" required extension="jpg"> 

在我的JS中:

        $('input[type=file]').change(function(e){
                   if($this).valid()){
                   //Do stuff...
                   }
            }); 

更新:确定运行良好,但现在我需要中止文件上传

这就是我使用jquery fileupload

$(function () {
    $('#linkIcon').fileupload({
        dataType: 'json',
        beforeSend: function(){
            if(!$('#linkIcon').valid()){
                alert("invalid extension");
                $(this)[0].abort(); 
            } 
        },
 done: function (e, data) {
        //SUCCESS
        alert("file uploaded");
        },
    replaceFileInput: false
});
});

1 个答案:

答案 0 :(得分:-1)

您可以在调用.valid()函数之前检查文件的扩展名。 jsFiddle here

 $('input[type=file]').change(function (e) {

    var fileName = $(this).val().replace(/^.*[\\\/]/, '');//Gets the file name
    var isCorrectExtension = false;
    if (fileName != null) {
        var extension = fileName.substr((fileName.lastIndexOf('.') + 1)).toLowerCase();
        if (extension === 'jpg' || extension === 'jpeg')
            isCorrectExtension = true;
    }

    if (isCorrectExtension) {
        //Do stuff...
    }
});