jQuery 1.10.2,启用/禁用元素,稍微调整一下

时间:2013-08-21 13:24:58

标签: jquery

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()函数可能不是正确的选择吗?

4 个答案:

答案 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');