2011-11-15 41 views
2

使用jQuery和jquery validate plugin我的形式。如果輸入類型=「文件」=文件被選中,如何返回「有效」?

如果input_17的內容爲length > 1,則需要選擇文件input_1_67。這樣可行。現在

 input_17: { 
     required: function(element) { 
      return $("#input_1_67").val().length > 1 
     } 
    } 

,如果用戶選擇一個文件,我想回到一個「有效」類的input_17。任何想法如何我可以得到這個類?並且:我只想添加這個類別,只有如果

$("#input_1_67").val().length > 1 

並選擇一個文件。

+0

代碼[在這個問題的答案](http://stackoverflow.com/questions/3227410/how-to-validate-multiple-input-type-files-with-jquery-validator-plugin)應該幫助你也是。 –

回答

1

如果您正在使用jQuery插件驗證,那麼你不應該有任何類添加到您的輸入,驗證這是否適合你。

據我所知,瀏覽器不會讓你讀文件的路徑,或將其設置爲此事。你將能夠得到的唯一的東西是文件名。這是一項安全限制,可防止未經授權的文件訪問。您可以通過獲取值來獲取文件名。一旦你有了這個,你可以對文件類型做進一步的驗證(但在客戶端不可靠)。如果您想自定義規則添加到驗證檢查的文件類型,那麼你可以這樣做:

jQuery.validator.addMethod("filetype", function(value, element) { 
    var types = ['jpeg', 'png', 'gif'], 
     ext = value.replace(/.*[.]/, '').toLowerCase(); 

    if (types.indexOf(ext) !== -1) { 
     return true; 
    } 
    return false; 
}, 'Insert invalid message here'); 

爲了使略高於更可重複使用,取文件類型的數組出功能,並通過他們作爲函數的一個參數。請參閱此鏈接:http://docs.jquery.com/Plugins/Validation/Validator/addMethod#namemethodmessage

其次,當你點擊一個文件輸入或點擊「瀏覽」按鈕,文件對話框打開。所以在輸入中唯一應該是文件名。

在這些假設下,該字段的有效性可以是一個簡單的檢查,看看是否有是有,這是你已經在做的事情。

0

你可以簡單地綁定change事件所需的輸入,即:

$('#input_1_67').change(function(){ 
    $(this).addClass('valid'); 
}); 
0
$('#input_1_67').change(function(){ 
    if($("#input_1_67").val().length > 1) 
     $("#input_17").addClass('valid'); 
    else 
     $("#input_17").removeClass('valid'); 
    } 
}); 

此外,如果你正在使用jQuery的驗證,你可能想嘗試

$('#input_1_67').change(function(){ 
    $("#input_17").valid(); 
}); 

這將會觸發驗證器方法(因爲input_17的有效性取決於input_1_67,所以只要input_1_67發生​​變化就應該驗證),並且插件會自動設置css類。

+0

+1,因爲有人繞過我們的迴應沒有明確的理由。 – maxedison

相關問題