jQueryによる要素の有効化/無効化については多くのことが書かれていますが、少し混乱しています。選択と単一の入力フィールドを使用しようとしています。選択を使用する場合は、フィールドを無効にする必要があり、その逆も同様です。
例えば
<span>Choice a year from the list</span>
<select id="selYear" name="selYear" >
<option id="op-0">Choice a year</option>
<option id="op-1" >1893 </option>
<option id="op-2" >1894</option>
</select>
<span>Or type a new one</span>
<input id="year_single" name="year_single" type="text" >
(もちろん、入力フィルターが必要です。) 最初のオプションが選択されている場合、入力フィールドを無効にして有効にするのは簡単でした。誰かが方法を尋ねた場合、コードがあります:
$("#selYear").change(function() {
if(this[0].selected){
$("#year_single").attr("disabled",false);
}
else
$("#year_single").attr("disabled",true)
})
)
しかし、逆のケースは、私が期待したようには機能しません。私は試した:
$("#year_single").change(function() {
if($(this).val().length == 0){
//alert("aaa");
$("#selYear").attr("disabled",false);
}
else
$("#selYear").attr("disabled",true)
})
これは機能しますが、挿入キーを押した後、またはそれをクリックした後、選択が無効になり、最初に数字を挿入した直後に無効になると予想されました。そのような場合、おそらくchange()
関数は正しい選択ではありませんか?