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>

なぜ1つだけが変更されるのですか?私が欠けているものは何ですか?よろしくお願いします
リンク: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 に答える