2014-01-24 32 views
0

我想基於單選按鈕選擇來驗證文件類型。如果用戶點擊「展示廣告」。他/她只能上傳圖像文件,如果用戶選擇「視頻」,他/她只能上傳視頻文件。此外,他們只能上傳特定大小的文件,而我以後可能會這樣做。現在我面臨的主要問題是我無法驗證圖像文件和視頻文件。這裏是我的jsfiddle:http://jsfiddle.net/MZu3g/基於單選按鈕的jQuery文件類型驗證

下面是我的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" 
     }); 
    } 
}) 

回答

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-

+0

如何在此規則中添加文件大小,請幫助我.... –

+0

對於圖像,您可以添加文件大小:1048576 ...但對於視頻文件,它給我錯誤...我也在尋找答案。 .. – nodeffect

1

由於您的提琴不包括jquery.validate.js劇本,我不知道如果是這樣的問題,或者如果問題是,你忘了包括additional-methods.js,這哪裏是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/

+0

的接受規則的工作,我有包括那些jquery ..我現在唯一的問題是有單獨的規則。當用戶選擇視頻時,如果選擇只能上傳圖像文件的「展示廣告」,他/她只能上傳視頻文件,反之亦然。 – nodeffect

+0

看看[這個答案](http://stackoverflow.com/questions/4128657/jquery-validation-changing-rules-dynamically/4129124#4129124)。你想要做的是使用單選按鈕的'change'功能替換掉上傳字段的所有規則。 – Ryley

+0

Ryley,我也遇到過這個,對我來說似乎有些複雜。但無論如何,我找到了解決我的問題的另一種方法。 – nodeffect