2014-07-24 64 views
0

您好我有一個動態複選框,如果用戶想要刪除某一行,現在我想要的是一個警報,會說「你確定要刪除嗎?」如果任何一個複選框被選中並且「沒有選擇!」如果未選中複選框。這是我到目前爲止有:動態複選框被選中/取消選中時的警報

HTML:

<th><input type="checkbox" name="select[]" value="<?php echo $row_direct['id']; ?>"></input></th> 

腳本:「你確定要刪除」

<script language="JavaScript" type="text/javascript"> 
var $delete = jQuery.noConflict(); 

$delete(document).ready(function(){ 

    $delete(".delete").click(function(e){ 

     if (document.getElementsByName('select[]').checked == false){ 
      alert('nothing is checked'); 
      e.preventDefault(); 
      return false; 
     } 

     else { 
     if(!confirm('Are you sure you want to delete?')){ 
      e.preventDefault(); 
      return false; 
     } 
     return true; 
     } 

    }); 
}); 
</script> 

發生了什麼事是,我只得到無論是否選中複選框,都會提醒。

任何幫助將不勝感激。謝謝!

+1

['$(ELEMENT).is(':checked')'](http://api.jquery.com/checked-selector/)? – Darren

+0

嗨@達倫。試過,如果($ delete('select []')。is(':checked')== false){}。不起作用。 – user3724238

+0

而且,你爲什麼要用''關閉你的輸入元素? ''標籤是自動關閉的,不需要。 – Darren

回答

1
if ($delete('[name="select[]"]:checked').length > 0) { 
    alert('Are you sure?'); 
} else { 
    alert('Nothing checked'); 
} 
+0

+1這就是答案。只要在你的'if'塊中修正錯字。 (*太多''''*)。 – Darren

+0

這工作也很完美!多謝你們! – user3724238

0

getElementsByName功能.checked不起作用,因爲getElementsByName返回元件的陣列。這應該工作:

if (document.getElementsByName('select[]')[0].checked == false){ ... 

但是,既然你有jQuery加載Aguardientico有一個更好的解決方案。

+0

他似乎還在使用多個複選框,因此檢查它的第一個實例仍可能導致問題。 – Darren

+1

那麼,如果有兩個輸入名稱相同,即使是jQuery選擇器也沒有意義,因爲不清楚哪個元素將用於執行操作。如果你要通過選擇器中的某些東西進行選擇,並且期望只有一個元素,最好確保只選擇一個元素! – NullPointer

+0

這不僅僅是一個有效的觀點。儘管如果你看看OP的代碼,你會發現他'需要'至少有一個複選框被打勾。 – Darren

相關問題