2017-07-04 24 views
0

检查单选按钮组的单选按钮我正在一个项目上工作,我需要通过它的值检查单选按钮组的单选按钮。我有这个单选组。javascript - 通过它的值从代码

<label class="radio-inline"> 
    <input type="radio" name="slect" id="optradio" value="oriente" checked>=Orienté 
</label> 
<label class="radio-inline"> 
    <input type="radio" name="slect" id="optradio" value="Nonoriente">Non orienté 
</label> 
在我的代码我有一个变量

,我设法将其影响两个值中的一个

var x="Nonoriente"  or  var x="oriente"  

我的目标是automatiquly检查中的X单选按钮等值当一个事件触发。

+0

'ID'应作为唯一的标识符。你正在使用它的两个元素。 – Max

+0

你不应该在你的HTML中有重复的ID。而不是按值检查(这实际上是不安全的),你应该给他们一个唯一的ID,并选择它们。更好:如果你在两个状态之间切换,用**复选框**代替它会更好吗?这就是这个输入控件的设计目的。 – Terry

+0

我已经想到了这一点,但我的项目中的情况意味着我为他们都做了相同的ID和名称。 –

回答

0

首先,解决大象在房间里:你的标记中不能有重复的ID。这不是我们编写的一些任意规则,但处理重复ID时的浏览器行为是未定义的。没有任何项目要求您有重复的ID - 这只是意味着糟糕的设计。

如果要按值选择,唯一的方法是选择页面上与此选择器匹配的所有单选按钮:input[type="radio"][value="Nonoriente"]。然后您遍历此节点集合并将它们的checked属性设置为true。

p/s:这种方法效率不高,但考虑到您在项目中提到了限制,它可能是唯一可行的解​​决方案。

var btn = document.getElementById('btn'); 
 

 
btn.addEventListener('click', function() { 
 
    var radioInputs = document.querySelectorAll('input[type="radio"][value="Nonoriente"]'); 
 

 
    for (i = 0; i < radioInputs.length; ++i) { 
 
    radioInputs[i].checked = true; 
 
    } 
 
});
<label class="radio-inline"> 
 
    <input type="radio" name="slect" id="optradio" value="oriente" checked>Orienté 
 
</label> 
 
<label class="radio-inline"> 
 
    <input type="radio" name="slect" id="optradio" value="Nonoriente">Non orienté 
 
</label> 
 

 
<button type="button" id="btn">Click to check nonoriente</button>

+0

我现在不知道,谢谢很多家伙。 –

0

使用jQuery很容易。以下是.prop() method的文档。

if (x === Oriente) { 
    $(input:first-of-type).prop("checked"); 
} else { 
    $(input:first-of-type).prop("checked"); 
} 

它可能更容易分配唯一的ID对每个单选按钮,并使用这些访问DOM元素.prop()方法。 (语义上它们应该是唯一的,反正如果由于某种原因,你要什么应用到多个DOM节点上,您应该使用一个类。)

本地JavaScript:

if (x === Oriente) { 
    document.getElementById('uniqueId1').checked = true; 
} else { 
    document.getElementById('uniqueId2').checked = true; 
} 
+0

不幸的是我不熟悉jquery,有没有任何解决方案的本地JavaScript? –

+0

我编辑了答案。没有足够强大的格式在评论:/ – CaptainJ

+0

好吧,非常感谢,我设法改变ID和解决了我的项目的影响。我将把这标记为解决方案。 –