使用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
答案 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");