jquery选择器和禁用='禁用'

时间:2011-08-18 13:45:13

标签: jquery jquery-selectors

我刚刚注意到,禁用时,选择器中没有选中禁用的输入文本字段。有没有办法说禁用选择输入......

<input type="text" name="MYNAME" id="preXXXX" disabled='disabled' value="my Value"  />

$.each($('input[id^="pre"], select[id^="pre"]').serializeArray(), function() {

4 个答案:

答案 0 :(得分:2)

已禁用的输入字段is在选择器中被选中,但在表单序列化(serializeArray())时包含 ,因为它不是{{ 3}}。 {O-3}}中记录了此行为。

答案 1 :(得分:1)

HTML5 spec指定disabled form fields should not be submitted with the form(3.1子弹#2)。

jQuery最好按照预期结果来遵循规范。

如果希望数据与表单一起传输,但您想阻止用户编辑该值,则应使用readonly="readonly"而不是disabled="disabled"。只读字段就是这样,用户可以读取它们,但不能编辑它们。

就选择而言,您只需要使用jQuery工厂方法进行选择:

$('input[id^="pre"], select[id^="pre"]')

您可以使用each函数迭代每个元素:

$('input[id^="pre"], select[id^="pre"]').each( function( index, element ){
  ...do stuff...
});

答案 2 :(得分:0)

如果您想提交已禁用的输入字段,可以尝试使用此类

//This gives an array of name/value pair object.
var inputArray = $('input[id^="pre"], select[id^="pre"]').serializeArray();

//Now look only for disabled input fields and push into inputArray and then process that.
$("input:disabled").each(function(){
   inputArray.push({ name: this.name, value: this.value });
});

//Now process inputArray which contains all the input fields name/value pair
$.each(inputArray, function() {

});

答案 3 :(得分:0)

试试这个。您可以像这样使用each

$('input[id^="pre"], select[id^="pre"]').each(function() { ... });