jQuery 有很多关于启用/禁用元素的文章,但我有点困惑。我尝试使用select和单个输入字段,如果使用select,则必须禁用该字段,反之亦然。
例如
<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()
函数可能不是正确的选择吗?
答案 0 :(得分:0)
尝试使用onkeyup事件
$("#year_single").on("keyup", function(event){
//YOUR CODE
});
答案 1 :(得分:0)
对于您的jquery版本&gt; 1.6 和.keypress
事件
$("#year_single").keypress(function() {
if(this[0].selected){
$("#year_single").prop("disabled",false);
}
else{
$("#year_single").prop("disabled",true)
}
});
答案 2 :(得分:0)
jQuery .keypress()可能适合你:
$("#year_single").keypress(function() {
if($(this).val().length == 0){
//alert("aaa");
$("#selYear").attr("disabled",false);
}
else
$("#selYear").attr("disabled",true)
})
答案 3 :(得分:0)
如果你使用jQuery 1.6 +
$("input").prop('disabled', true);
$("input").prop('disabled', false);
如果您使用的是jQuery 1.5及更低版本
$("input").attr('disabled','disabled');
再次启用
$("input").removeAttr('disabled');