【问题标题】:jQuery File Type Validation Based on Radio Buttons基于单选按钮的 jQuery 文件类型验证
【发布时间】:2014-01-24 04:22:20
【问题描述】:

我正在尝试根据单选按钮选择来验证文件类型。如果用户点击“展示广告”。他/她只能上传图像文件,如果用户选择“视频”,他/她只能上传视频文件。此外,他们只能上传特定大小的文件,我以后可能会这样做。我现在的主要问题是我无法验证图像文件和视频文件。这是我的 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"
        });
    }
})

【问题讨论】:

    标签: jquery validation file-type


    【解决方案1】:

    由于您的小提琴没有包含 jquery.validate.js 脚本,我不确定这是否是问题所在,或者问题是您忘记包含additional-methods.js,这是accept统治生活。如果你没有那个,你的 accept 规则将永远不会起作用,并且会抛出错误(你应该在你的问题中包含这些错误!)。

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

      <script type='text/javascript' src="http://jquery.bassistance.de/validate/jquery.validate.js"></script>    
      <script type='text/javascript' src="http://jquery.bassistance.de/validate/additional-methods.js"></script>
    

    在这里查看一个工作示例:http://jsfiddle.net/ryleyb/MZu3g/1/

    【讨论】:

    • 接受规则有效,我包含了那些 jquery。我现在唯一的问题是有单独的规则。当用户选择视频时,他/她只能上传视频文件,反之,如果选择“展示广告”,他/她只能上传图片文件。
    • 查看this answer。您要做的是使用单选按钮的change 功能来交换上传字段的所有规则。
    • Ryley,我也遇到过这个问题,对我来说似乎有点复杂。但无论如何,我找到了解决问题的另一种方法。
    • 当然。您的解决方案与我提出的方案基本相同,但已经足够好了,很高兴您发现了!
    【解决方案2】:

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

    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-

    【讨论】:

    • 对于图像,您可以添加文件大小:1048576...但是对于视频文件,它会给我错误...我也在寻找答案...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多