如何使用jquery </select>获取<select> id

时间:2013-04-01 18:40:30

标签: javascript jquery

使用jquery脚本遍历HTML表单元素,我看到我能够使用以下代码获取标记的id:

$(":checkbox,:radio,:text,:selected", this).each(function(){
    var controlName = $(this).attr("id");
    var controlType = $(this).attr("type");

    alert(controlName);

    if(controlType=="checkbox" || controlType=="radio"){
        if ($(this).attr('checked')=="checked"){cadena += "&" + controlName + "=on";}
        else{ cadena += "&" + controlName + "=off";}    
    }
    else{
        cadena += "&" + controlName + "=" + $(this).attr('value');
    }               
});

它适用于复选框,radioButtons和textInputs,为我提供了正确的ID。但是对于select标签,它总是返回“undefined”。

我做错了什么?

感谢。

*更新* 这是我目前的表格。我知道这不是一个“正常”的形式,但我在一个特殊的应用程序中使用它。感谢大家的耐心等待:

    <form action="#" id="ejemplo" class="ejemplo">
    <fieldset>
        <legend> Formulario de ejemplo </legend>

        <input id="Nombre" type="text" value="Texto1" name="Nombre" />    <label for="Nombre">Nombre</label> <br/>
        <input id="Apellidos" type="text" value="Texto1"  name="Apellidos" /> <label for="Apellidos">Apellidos</label> <br/>

        <label for="campo2">Campo 2</label>
        <select id="coches">
            <option value="volvo">Volvo</option>
            <option value="saab">Saab</option>
            <option value="mercedes">Mercedes</option>
            <option value="audi">Audi</option>
        </select>

        <br/>

        <input type="checkbox" id="option1"> <label for="option1"> Milk   </label>
        <input type="checkbox" id="option2"> <label for="option2"> Butter </label>
        <input type="checkbox" id="option3"> <label for="option3"> Cheese </label>
        <br/>

        <input type="radio" name="group1" id="radio1"> <label for="radio1"> Milk   </label> <br/>
        <input type="radio" name="group1" id="radio2"> <label for="radio2"> Butter </label> <br/>
        <input type="radio" name="group1" id="radio3"> <label for="radio3"> Cheese </label>
        <br/>

        <textarea cols="40" rows="5" id="areaTexto">Inside de text area!</textarea>
        <br/>
        <input id="boton" type="button" value="Boton"><br>
    </fieldset>
</form>

获取选择“coche”id,它返回“undefined”。但是让它的价值回归正确。

运行我的代码后,它返回:

&安培;农布雷= Texto1&安培; Apellidos = Texto1&安培;未定义=沃尔沃&安培;选项1 =关&安培;选项2 = OFF&安培;选项3 =关&安培;收音机1 =关&安培;第二广播电台=关&安培; radio3 =关

看看undefined = volvo:S

3 个答案:

答案 0 :(得分:1)

:选中的不是你想象的那样。

  

<强> jQuery :select

     

描述:选择所有选定的元素。

     

版本添加:1.0

     

jQuery( ":selected" ):所选的选择器适用于   元素。它不适用于复选框或无线电输入;使用   :检查一下。

您想使用select来获取选择元素。

或者您可以使用获取所有输入元素的:input

答案 1 :(得分:0)

:selected matches selected <option>s,而不是<select>元素。更改选择器:

$(":checkbox,:radio,:text,select", this)

N.B。 $(this).attr('id') can always be replaced with this.id.

答案 2 :(得分:0)

<select id="foo">
  <option value="1">a</option>
  <option value="2">b</option>
  <option value="3">c</option>
</select>

对于选择标记,您可以使用:selected过滤器获取select选项父级的ID:

var id = $(this).children(":selected").attr("id");