2011-02-28 96 views
66

我有2個單選按鈕和jquery運行。javascript jquery單選按鈕單擊

<input type="radio" name="lom" value="1" checked> first 
<input type="radio" name="lom" value="2"> second 

現在,用一個按鈕我可以設置onClick來運行一個函數。當我單擊其中一個按鈕時,單選按鈕的運行方式是什麼?

+1

注意。最好不要讓表單元素響應點擊,因爲很多人使用鍵盤導航表單。 – superluminary 2014-03-17 16:37:47

回答

121

可以使用.change您要

$("input[@name='lom']").change(function(){ 
    // Do something interesting here 
}); 

什麼在jQuery 1.3

的你不再需要 '@'。選擇正確的方法是:

$("input[name='lom']") 
+7

請注意,截至jQuery 1.3,您不再需要'@'。正確的選擇方法是:'$(「input [name ='lom']」) – lubar 2013-01-20 01:56:19

+3

這個解決方案是否可以與基於無線電值的條件語句在@JohnIdol的解決方案中集成? ex($(「input [name ='lom']」)。change(function(){if($(this).val()==='1'){.....//其餘的條件語句基於這裏的值};' – LazerSharks 2013-07-03 07:01:42

+0

從jQuery 1.3開始,你**不應該在name屬性中使用'@'。如果你這樣做,你將得到一個'jquery.self-0a6570c ... .js?body = 1:1464未捕獲的錯誤:語法錯誤,無法識別的表達式錯誤。所以這不是一個選擇問題。 – scaryguy 2016-09-26 21:05:01

6

這應該是很好的

$(document).ready(function() { 
    $('input:radio').change(function() { 
     alert('ole'); 
    }); 
}); 
+0

你錯過了a);在後面。 – 2016-12-29 11:19:40

40

如果你在一個容器中的無線電設備使用id = radioButtonContainerId你仍然可以使用的onClick然後檢查選擇其中之一,並相應地運行一些功能:

$('#radioButtonContainerId input:radio').click(function() { 
    if ($(this).val() === '1') { 
     myFunction(); 
    } else if ($(this).val() === '2') { 
     myOtherFunction(); 
    } 
    }); 
+0

謝謝。這對我很有用,因爲我的字段是數組的一部分,我不能使用輸入[name ='xxx']記法 - crafter 2012-12-20 10:19:36

+0

即使您使用箭頭鍵下拉並移動標記,這是否會反應? – Alisso 2013-01-02 12:12:22

+0

這將無法在手機中工作#選擇器無法在手機中工作。 – zawhtut 2013-08-15 03:14:09

3

限制DOM搜索總是好的。所以更好地使用父母,以便整個DOM不會被遍歷。

IT IS VERY FAST

<div id="radioBtnDiv"> 
    <input name="myButton" type="radio" class="radioClass" value="manual" checked="checked"/> 
<input name="myButton" type="radio" class="radioClass" value="auto" checked="checked"/> 
</div> 



$("input[name='myButton']",$('#radioBtnDiv')).change(
    function(e) 
    { 
     // your stuffs go here 
    }); 
8

有幾種方法可以做到這一點。強烈建議在單選按鈕周圍放置容器,不過,您也可以直接在按鈕上放置課程。有了這個HTML:

<ul id="shapeList" class="radioList"> 
<li><label>Shape:</label></li> 
<li><input id="shapeList_0" class="shapeButton" type="radio" value="Circular" name="shapeList" /><label for="shapeList_0">Circular</label></li> 
<li><input id="shapeList_1" class="shapeButton" type="radio" value="Rectangular" name="shapeList" /><label for="shapeList_1">Rectangular</label></li> 
</ul> 

您可以通過類選擇:

$(".shapeButton").click(SetShape); 

或容器ID選擇:

$("#shapeList").click(SetShape); 

在這兩種情況下,事件將觸發點擊任一電臺按鈕或標籤,但在後一種情況下(通過「#shapeList」選擇),單擊該標籤將由於某種原因觸發點擊功能兩次,至少在FireFox中是這樣;按班級選擇不會那樣做。

SetShape是一個函數,看起來像這樣:

function SetShape() { 
    var Shape = $('.shapeButton:checked').val(); 
//dostuff 
} 

這種方式,你可以對你的按鈕中的標籤,並且可以具有做不同的事情在同一個頁面上的多個單選按鈕列表。甚至可以讓同一列表中的每個單獨按鈕通過根據按鈕的值在SetShape()中設置不同的行爲來執行不同的操作。

13
<input type="radio" name="radio" value="creditcard" /> 
<input type="radio" name="radio" value="cash"/> 
<input type="radio" name="radio" value="cheque"/> 
<input type="radio" name="radio" value="instore"/> 

$("input[name='radio']:checked").val() 
+1

儘管這個答案沒有顯示如何將代碼連接到事件,但我喜歡它包含如何檢索單選按鈕組的值的信息。 – Manfred 2014-10-22 07:21:22

+1

$(「input [@ name ='lom']」)。change(function(){ //在這裏做一些有趣的事情 }); – 2014-11-09 22:47:41