在jquery中获取radio类型的输入字段的值

时间:2014-01-26 18:00:55

标签: javascript jquery input radio

我有一个输入字段,如下面的

<input class="d_o" type="radio" value="super" name="old_or_new" checked="checked"> Get this value actually</input><br/>

我必须得到输入字段的值,即Get this value actually,所以尝试了下面的jquery代码

console.log($('.d_o').text());

但令我感到惊讶的是它没有返回任何内容,并且当它试图获得像$('.d_o').val()

这样的值时它正在工作

那么如何使用jquery从上面的输入字段中获取文本值我错过了什么?

3 个答案:

答案 0 :(得分:5)

您的<input>元素的全部内容为

<input class="d_o" type="radio" value="super" name="old_or_new" checked="checked">

在它之后的文本和无效的 html </input>是DOM树中完全不同的节点。因此val会按预期返回值“super”,但text没有要返回的文本。

答案 1 :(得分:1)

  

.text()方法不能用于表单输入或脚本

http://api.jquery.com/text/

虽然我不确定jQuery遵循什么方法:一个解释可以是每个HTMLElement的“内容模型”规范。

  Content model
  A normative description of what content must be included as children and descendants of the      element.

例如: 对于输入类型:http://www.w3.org/TR/html5/forms.html#the-input-element

  

内容模型:清空。

但是对于标题元素,这被定义为

     Content model : Text 

http://www.w3.org/TR/html5/document-metadata.html#the-title-element

渴望在此假设上看到验证:)

答案 2 :(得分:0)

<input class="d_o" type="radio" value="super" name="old_or_new" checked="checked"> Get this value actually</input><br/>

这不是处理<input>标记的正确方法。您应该使用:checked和。val()代替:

$(document).ready(function(){
    $('#hey').on('click', function(event){
        alert($('.check:checked').val());
    });
});
<h2>Select old or new</h2><br>

<b>Old</b>:<br>
<input type="radio" class="check" name="old_or_new" value="old"><br>

<br>

<b>New</b>:<br>
<input type="radio" class="check" name="old_or_new" value="new"><br>

<br>

<input type="button" id="hey">

检查小提琴:http://jsfiddle.net/MLWCK/