2015-10-06 36 views
0

我試圖隱藏表單的提交按鈕,直到使用jQuery選擇了某種文件。如果(元素:包含)不斷返回true,無論涉及什麼值或元素

<input type="file" id="file"> 
<input type="submit" id="submit"> 

if($("#file:contains('.png')")) { 
    alert("Yep, that's a PNG image"); 

    $('#submit').show(); 
} 

jQuery的不斷返回true,不管涉及什麼價值或元素,只要頁面加載警報大作,並告訴我,該文件包含輸入「png格式」

我明白這個ISN順便說一句,做這件事的方式確實是正確的。我相信你可以通過使用檢查元素來解決這個問題。

回答

1

使用選擇器調用jQuery將始終返回總是真的jQuery對象,這就是爲什麼if條件總是返回true

而且:contains檢查元素的文本內容,不珍惜,所以你需要檢查文件的值是否是有png格式

$('#file').change(function() { 
 
    var png = /\.png$/.test($('#file').val()); 
 
    if (png) { 
 
    alert("Yep, that's a PNG image"); 
 
    } 
 
    $('#submit').toggle(png); 
 
})
#submit { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input type="file" id="file"> 
 
<input type="submit" id="submit">

0

DEMO

我希望你會這樣做的change event。因此,我建議以下工作圍繞實現這一目標:

$('#file').change(function(e){ 
     var file = $(this).val(); 
     if(file!="" && file != null) 
     { 
      var ext = file.split('.').pop();//get the type 
      if(ext=="png") 
      { 
       alert("Yep, that's a PNG image"); 
       $('#submit').show(); 
      } 
      else 
      { 
       alert("Yawk!! Bad file"); 
       $('#submit').hide(); 
      } 
     } 
}); 
+0

是啊,這是採取合理的路徑。我的問題僅僅是爲什麼它總是迴歸真實。你可以用inspect元素取消隱藏提交按鈕嗎? – JackHasaKeyboard

+0

你的選擇是不正當的夥計..這不是什麼':包含'打算做.. ** [在這裏檢查](https://api.jquery.com/contains-selector/)** –