2011-04-28 64 views
0

我有5個按鈕,用戶可以檢查。一會兒代碼允許用戶檢查多於1個按鈕。 我想,很快他們點擊第二個按鈕,出現警告對話框,看他們是否想要進行這個過程,如果是,它會將checked class添加到選定的按鈕jquery只允許一個按鈕被檢查

<form class="table_book"> 
<input id="block_book" type="button" value="first" class="checked"> 
<input id="block_book" type="button" value="second"> 
<input id="block_book" type="button" value="third"> 
<input id="block_book" type="button" value="fourth"> 
<input id="block_book" type="button" value="fifth"> 
</form> 

$("input#block_book").live('click',function(){ 
    if($(".table_book #block_book").hasClass("checked").length > 1) { 
    if(var conf = confirm('Are you sure want to select the button?')) 
     // ajax process 
    } else { 
     // remove unchecked class 
    } 
    } 
}) 
+1

ID必須是相同的。如果你想讓他們共享這樣的類型,請使用'class'。 – Spudley 2011-04-28 14:32:42

回答

3

的第一份工作是將輸入轉換爲使用通用類,而不是一個ID

HTML

<form class="table_book"> 
    <input class="block_book" type="button" value="first"> 
    <input class="block_book" type="button" value="second"> 
    <input class="block_book" type="button" value="third"> 
    <input class="block_book" type="button" value="fourth"> 
    <input class="block_book" type="button" value="fifth"> 
</form> 

如果我正確地理解你的要求,那麼這段代碼應該工作。第一個按鈕可以自由選擇。點擊第二個按鈕會提示確認更改。

JQ

$(function() { 
    $("input.block_book").live('click', function() { 
     var setClass = true; 
     if ($("input.block_book.checked").length > 0) 
      setClass = confirm('Are you sure want to select the button?'); 

     if (setClass) { 
      // ajax process 
      $("input.block_book").removeClass("checked") 
      $(this).addClass("checked") 
     } 
    }); 
}); 
0

實際上在您的源代碼中有一個致命錯誤。所有按鈕都有相同的ID。請改變它。

之後也修改第一行$("form .table_book").find(":input[type='button']").live('click',function() {

+0

改進:將$(「form .table_book」)的結果存儲在一個額外的變量中,以便您可以多次使用它。甚至可以計算「檢查」的班級數量。 – reporter 2011-04-28 14:29:07

1

我不完全理解你正試圖在這裏應用邏輯(例如做他們的答案,「你確定」的問題確定是否不超過一個箱子可以進行檢查

而且,我不知道你想確定在「條件」是什麼? - hasClass回報truefalse,這不是一個選擇

但是,爲了回答實際。你的問題的標題,如何檢查只有一個,理由t在點擊事件中執行此操作。根據需要應用你想要的邏輯。

$(".table_book #block_book.checked").removeClass("checked"); 
$(this).addClass("checked"); 

http://jsfiddle.net/t3FNy/1/

作爲另一個答案noted- ID應該是唯一的。雖然這會起作用,但這不是一種好的做法,並且在此代碼中根本沒有附加值。

相關問題