2011-02-28 89 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