如何在Javascript中以相同的方式获取文本框、文本区域和收音机的值?

如何在Javascript中以相同的方式获取文本框、文本区域和收音机的值?,javascript,html,dhtml,Javascript,Html,Dhtml,我想要一个函数/代码,它将返回用户为其名称/id传递给它的字段提交的值。该字段是文本框、文本区域、收音机还是select都不重要。例如,该字段可以是: <input type='radio' name='a_21' value='test' id='a_21_0' /> <input type='radio' name='a_21' value='test2' id='a_21_1' /> 它应该返回所选的值 我该怎么做?将: document.myForm.field

我想要一个函数/代码,它将返回用户为其名称/id传递给它的字段提交的值。该字段是文本框、文本区域、收音机还是select都不重要。例如,该字段可以是:

<input type='radio' name='a_21' value='test' id='a_21_0' />
<input type='radio' name='a_21' value='test2' id='a_21_1' />
它应该返回所选的值

我该怎么做?将:

document.myForm.field.value

也适用于文本区域、下拉列表和收音机?

问题是不同的小部件有不同的用途。例如,具有多个可用选项的
框、多个复选框,甚至单个复选框(其值仅为“开”或“关”)不会有单个值,因此它们的行为与其他小部件不同是可以的

但如果您想拥有一个单一功能,可以执行以下操作:

function getVal(obj){
  if(obj.value){
    return obj.value;
  }

  if(obj.selectedIndex){
    return obj.options[obj.selectedIndex];
  }

  if(obj.checked){
    return obj.checked;
  }

 return null;
}

问题是不同的小部件有不同的用途。例如,具有多个可用选项的
框、多个复选框,甚至单个复选框(其值仅为“开”或“关”)不会有单个值,因此它们的行为与其他小部件不同是可以的

但如果您想拥有一个单一功能,可以执行以下操作:

function getVal(obj){
  if(obj.value){
    return obj.value;
  }

  if(obj.selectedIndex){
    return obj.options[obj.selectedIndex];
  }

  if(obj.checked){
    return obj.checked;
  }

 return null;
}

使用jQuery,您可以执行以下操作:

$('[name="a_21"]').val();
这将为您提供名为a_21的字段的on值,因此不管字段的类型如何

注意:不需要引号,但由于复选框数组,我在添加引号的实践中得到了一些好处:

<input type="checkbox" name="ids[]" value="1" />
<input type="checkbox" name="ids[]" value="2" />


我认为安全性比试图找出它为什么不起作用要好。

使用jQuery,您可以做到:

$('[name="a_21"]').val();
这将为您提供名为a_21的字段的on值,因此不管字段的类型如何

注意:不需要引号,但由于复选框数组,我在添加引号的实践中得到了一些好处:

<input type="checkbox" name="ids[]" value="1" />
<input type="checkbox" name="ids[]" value="2" />


我认为安全性比试图找出它为什么不起作用要好。

Std回答:使用jQuery。jQuery只对ID有效。对于收音机,我不能对每一台都使用相同的IDoption@ClickUpvote:实际上,您可以很容易地编写一个jQuery选择器,该选择器将匹配name属性,并使用:selected pseudoclass进一步优化,虽然我同意jquery可以很方便地解决这个问题,但我确实觉得,在问题不需要jquery的地方,应该强调提供一个实际的javascript解决方案(坦率地说,这是微不足道的)。“使用jquery”完全是一个现成的咒语。只有我的0.02美元。@annakata:是的,这就是为什么我发表评论而不是回答。当使用jQuery时,像这样的问题的解决方案是如此微不足道,以至于他们总是会根据此建议收集一个或多个答案。。。编写一个独立的函数来实现这一点,虽然很简单,但却很枯燥(请注意,Seb的回答忽略了在组中查找所选单选按钮的逻辑,以及统一返回值(如通过AJAX提交表单所需的返回值)。答:使用jQuery。jQuery只对ID有效。对于收音机,我不能对每个用户使用相同的IDoption@ClickUpvote:实际上,您可以轻松编写一个jQuery选择器,该选择器将匹配name属性,使用:selected伪类进一步细化,然后提取值。虽然我同意jQuery将轻松解决这个问题,我确实觉得,如果问题不需要jquery,那么就应该强调提供一个实际的javascript解决方案(坦白说,这是微不足道的)。“使用jquery”完全是一个现成的咒语。只有我的0.02美元。@annakata:是的,这就是为什么我发表评论而不是回答。当使用jQuery时,像这样的问题的解决方案是如此微不足道,以至于他们总是会根据此建议收集一个或多个答案。。。编写一个独立的函数来实现这一点,虽然很简单,但却很枯燥(请注意,Seb的回答忽略了在组中查找所选单选按钮的逻辑,以及统一返回值(如通过AJAX提交表单所需的返回值)“a_21”是否需要双引号?通常我会否决“使用jQuery”的答案,但这才是真正的答案shines@Click向上投票,@Seb:根本不需要引号。a_21是否需要双引号?通常我会向下投票“使用jQuery”答案,但这才是真正的答案shines@Click向上投票,@Seb:根本不需要引号。