更改两个输入字段的属性

时间:2013-01-31 16:14:56

标签: javascript jquery

使用jQuery向这些输入字段添加属性时遇到一些问题:

<input id='timetable_start'>
<input id='timetable_finish'>

<script>
attributes = {
    "class": "reloj",
    "maxlength": "5",
    "pattern": "^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$",
    "size": "6",
    "type": "text"
};

$('#timetable_finish').attr(attributes);
$('#timetable_start').attr(attributes);
</script>

为什么只有一个被改变?我错过了什么?在此先感谢您的时间
链接: http://jsbin.com/iqipan/4/edit

3 个答案:

答案 0 :(得分:6)

因为在尝试设置第一个输入字段的属性时,代码会引发错误:

  

未捕获错误:无法更改type属性。

从对象中删除type,一切都会好的。


某些浏览器(我猜IE)在创建后不允许更改input元素的类型,因此如果您尝试这样做,jQuery会抛出异常。请参阅change type of input field with jQuery

答案 1 :(得分:3)

使用

$("#timetable_finish, #timetable_start").attr(attributes);

但是,您无法更改输入的type属性。您必须改为创建新输入:

$("#timetable_finish").replaceWith($("<input>", attributes));

答案 2 :(得分:3)

这是因为属性 type是只读的 - 而 DOM属性 type则不是。

您可以使用:

$('#timetable_finish').prop(attributes);
$('#timetable_start').prop(attributes);

成功更改两者。