4

我在使用 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

4

3 回答 3

6

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

未捕获的错误:无法更改类型属性。

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


某些浏览器(我猜是 IE)不允许在input创建元素后更改其类型,因此如果您尝试这样做,jQuery 会抛出异常。请参阅使用 jQuery 更改输入字段的类型

于 2013-01-31T16:19:59.120 回答
3

利用

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

但是,您不能更改type输入的属性。您将不得不创建一个新输入:

$("#timetable_finish").replaceWith($("<input>", attributes));
于 2013-01-31T16:19:10.683 回答
3

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

您可以使用:

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

成功改变两者。

于 2013-01-31T16:20:03.630 回答