基于单选按钮的jQuery文件类型验证

时间:2014-01-24 04:22:21

标签: jquery validation file-type

我正在尝试根据单选按钮选择验证文件类型。如果用户点击“展示广告”。他/她只能上传图像文件,如果用户选择“视频”,他/她只能上传视频文件。此外,他们只能上传特定大小的文件,以后我可能会这样做。我现在面临的主要问题是我无法验证图像文件和视频文件。这是我的jsfiddle:http://jsfiddle.net/MZu3g/

以下是我的javascript示例代码。

$('.form_validation_reg3').validate({
    onkeyup: false,
    errorClass: 'error',
    validClass: 'valid',
    highlight: function (element) {
        $(element).closest('div').addClass("f_error");
    },
    unhighlight: function (element) {
        $(element).closest('div').removeClass("f_error");
    },
    errorPlacement: function (error, element) {
        $(element).closest('div').append(error);
    },
    rules: {
        'gender[]': {
            required: '#adtarget_check:checked',
            minlength: 1
        },
            'target_age[]': {
            required: '#adtarget_check:checked',
            minlength: 1
        },
            'target_time[]': {
            required: '#adtarget_check:checked',
            minlength: 1
        },
            'target_device[]': {
            required: '#adtarget_check:checked',
            minlength: 1
        },
            'target_location[]': {
            required: '#adtarget_check:checked',
            minlength: 1
        },
            'target_network[]': {
            required: '#adtarget_check:checked',
            minlength: 1
        },
        notebook: {
            required: true,
            minlength: 1,
            accept: "jpg|jpeg|png|ico|bmp"
        },
        mobile: {
            required: false,
            minlength: 1,
            accept: "jpg|jpeg|png|ico|bmp"
        },
    },
    invalidHandler: function (form, validator) {
        $.sticky("There are some errors or no Ads image were selected. Please correct them and submit again.", {
            autoclose: 8000,
            position: "top-right",
            type: "st-error"
        });
    }
})

2 个答案:

答案 0 :(得分:1)

由于您的小提琴不包含jquery.validate.js脚本,我不确定这是否是问题,或者问题是您忘记包含additional-methods.js,这是{ {1}}统治生命。如果您没有,那么您的accept规则将永远不会有效,并且会抛出错误(您应该将错误包括在内!)。

所以要清楚,这就是你的脚本应该是这样的:

accept

请参阅此处的工作示例:http://jsfiddle.net/ryleyb/MZu3g/1/

答案 1 :(得分:1)

通过添加这些来找到解决方案..

var radio_value = null;
$("input[name='tabnote_radio']").change(function() {
    radio_value = this.value;
    if ( radio_value == "image") {
        $('#notebook').rules('add', {
            extension: "jpg|jpeg|png|gif"
        });
    } else if( radio_value == "video") {
        $('#notebook').rules('add', {
            extension: "flv|mov|mp4|wmv|ogv"
        });
    };
});

这也很有用:http://snippets.aktagon.com/snippets/490-how-to-add-and-remove-validation-rules-jquery-validate-plugin-