代码之家  ›  专栏  ›  技术社区  ›  Ali

如何在javascript中以相同的方式获取文本框、文本区域和无线电的值?

  •  1
  • Ali  · 技术社区  · 16 年前

    我需要一个函数/代码,它将返回用户为其名称/ID传递给它的字段提交的值。不管字段是文本框、文本区域、无线电还是选择。例如,字段可以是:

    <input type='radio' name='a_21' value='test' id='a_21_0' />
    <input type='radio' name='a_21' value='test2' id='a_21_1' />
    

    <textarea name="a_21" rows="30" cols="6"></textarea>
    

    当我打电话时:

    function getVal('a_21');
    

    它应该返回选定的值。

    我该怎么做?威尔:

    document.myForm.field.value
    

    也为文本区域、下拉列表和收音机工作?

    2 回复  |  直到 16 年前
        1
  •  4
  •   Darryl Hein IrishChieftain    16 年前

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

    $('[name="a_21"]').val();
    

    这将为您提供名为a_21的字段的值,因此无论字段类型如何。

    注: 不需要引号,但由于复选框数组,我已经开始添加引号:

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

    我觉得安全比试图弄明白为什么它不起作用要好。

        2
  •  7
  •   Seb    16 年前

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

    但是,如果你想有一个单独的函数,你可以做如下的事情:

    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;
    }