使用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
答案 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);
成功更改两者。