javascript/jquery-解析radio/checkbox的所有元素-如何获取每个元素的文本值



我正试图通过复选框/单选按钮进行解析。

作为一个例子,让我们考虑下面单选按钮的html代码——

<br/><br/>Lunch-
<input type="radio" name="lunch" value="pasta1" /> Pasta
<input type="radio" name="lunch" value="rissotto1" /> Rissotto
<br/>

现在我使用以下代码来获得屏幕上显示的文本值(例如"Pasta"(和指定的值(例如,"pasta1"(--

$(jQuery('input[type="radio"], input[type="checkbox"] ', $(element).parent('form'))).each(function() 
{
                    alert(" Text values =" + $(this).text());
                    alert(" actual values =" + $(this).val());
                                    ---SOME MORE CODE---
}

作为输出,当我使用$(this(.text((时,我没有得到任何值,尽管$(this(.val((工作得很好。

如何获取单选按钮/复选框的每个元素的文本值。。。我可以用什么来代替上面使用的$(this(.text((?是否有其他方法可以获得文本值(例如上面的例子中的"Pasta"或"Risotto"(?

我认为您无法使用现有HTML检索文本值。理想情况下,您应该创建标签元素来容纳文本。例如

<input type="radio" name="lunch" value="pasta1" /> <label>Pasta</label>
<input type="radio" name="lunch" value="rissotto1" /> <label>Rissotto</label>

然后你可以得到文本:

$(this).next().text();

编辑:

如果您不能更改HTML,这里有一个肮脏的解决方法。

假设您在这些单选按钮周围有一个id为wrapper的包装元素(form或div(,并且每个单选按钮都有唯一的值-

/*
 * Create mapping between radio button values and texts
 */ 
var mapping = new Array();
var current_key = '';
$('#wrapper').contents().each(function()
{
   if(current_key)
   {
       mapping[current_key] = $(this).text();
       current_key = '';
   }
   if($(this).attr('type') == 'radio')
   {
       current_key = $(this).val()
   }
});  

然后你可以很容易地使用映射:

$('input[type=radio]').each(function()
{
    text = mapping[$(this).val()];
}) 

.text()不适用于那些没有结束标记的元素。例如<INPUT> <IMG>如果您阅读了.text()的文档,其中清楚地写道,.text()方法不能用于表单输入或脚本

我不确定您到底想显示什么,但给定value属性会在单选按钮旁边显示一个文本。这就是它的工作原理。我不知道你为什么要在那之后再发一条短信。但如果是这样的话,那么@Vikk提出的解决方案是正确的。

最新更新