2017-07-11 41 views
0

我想返回「選中」單選按鈕的文本。由模板生成的HTML結構和呈現,像這樣:返回選中的單選按鈕的文本

<input type="radio" name="whatever" value="Y" checked="checked" >Yes</input> 
<input type="radio" name="whatever" value="N" >No</input> 
<input type="radio" name="whatever"value="NA" >Not Applicable</input> 

我能得到像這樣的值:

collection.find("input[type='radio']").each(function() { 
    var checked = $(this).find(':checked').val(); 
}); 

我期待能夠使用的.text()或.html()而不是.val(),但都不起作用。我怎樣才能得到var checked =「是」?

回答

1

你的HTML是無效的。 input只有一個短標籤,所以它不期望在起始標籤和結束標籤之間有文本節點。您應該使用label爲您的文字:

$('.collection').find("input[type='radio']").each(function() { 
 
    var checked = $(this).find(':checked').val(); 
 
    var text = $(this).parent('label').text(); 
 
    console.log(text); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="collection"> 
 
    <label> 
 
    <input type="radio" name="whatever" value="Y" checked="checked" />Yes 
 
    </label> 
 
    <label> 
 
    <input type="radio" name="whatever" value="N" />No 
 
    </label> 
 
    <label> 
 
    <input type="radio" name="whatever" value="NA" />Not Applicable 
 
    </label> 
 
</div>

0

在這裏,你去與解決方案https://jsfiddle.net/w6kqak6w/1/

$("input[type='radio']").each(function() { 
 
    var checked = $("input[type='radio']:checked")[0].nextSibling.textContent; 
 
    console.log(checked); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="radio" name="whatever" value="Y" checked="checked" />Yes 
 
<input type="radio" name="whatever" value="N" />No 
 
<input type="radio" name="whatever"value="NA" />Not Applicable

2

您可以使用nextSibling返回旁邊輸入和textContent返回文本的文本節點。 input也不能包含文本,並且它們沒有結束標記。

var text = $('input:radio:checked')[0].nextSibling.textContent; 
 
console.log(text)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="radio" name="whatever" value="Y" checked="checked" >Yes 
 
<input type="radio" name="whatever" value="N" >No 
 
<input type="radio" name="whatever" value="NA" >Not Applicable

+0

我喜歡這種回答最。其他人可能會演示更好的做法,使用標籤來保存引用輸入的文本,但這種方式利用了OP發佈的HTML,而OP說HTML生成了(爲什麼它是用結束標籤生成的,儘管我沒有絲毫)。 –

0

沒有爲輸入字段沒有直接的文本屬性,因此,使用標籤或跨度:

$("input[type='radio']:checked").each(function() { 
 
    var checked = $(this).find(':checked').val(); 
 
    var text = $(this).next('label').text(); 
 
    console.log(text); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
    <input type="radio" name="whatever" value="Y" checked="checked" /><label>Yes</label> 
 
    <input type="radio" name="whatever" value="N" /><label>No</label> 
 
    <input type="radio" name="whatever" value="NA" /><label>Not Applicable</label>

相關問題