0

有很多关于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)   

})

这可行,但是在按下 Insert 键后选择会被禁用,或者在单击它​​后,我希望在第一个插入数字后被禁用。在这种情况下,该change()功能可能不是正确的选择?

4

4 回答 4

0

尝试改用 onkeyup 事件

$("#year_single").on("keyup", function(event){
   //YOUR CODE
});
于 2013-08-21T13:29:35.093 回答
0

对于您的 jquery 版本> 1.6.keypress事件

$("#year_single").keypress(function() {
        if(this[0].selected){           
            $("#year_single").prop("disabled",false);   
        }       
        else{  
          $("#year_single").prop("disabled",true)   
        }
 }); 
于 2013-08-21T13:30:08.833 回答
0

jQuery .keypress() 可能对你有用:

 $("#year_single").keypress(function() {
    if($(this).val().length == 0){
        //alert("aaa");
        $("#selYear").attr("disabled",false);   
    }       
    else  
    $("#selYear").attr("disabled",true)   

})
于 2013-08-21T13:30:10.290 回答
0

如果你使用 jQuery 1.6+

$("input").prop('disabled', true);
$("input").prop('disabled', false);

如果您使用的是 jQuery 1.5 及以下版本

$("input").attr('disabled','disabled');

再次启用

$("input").removeAttr('disabled');
于 2013-08-21T13:30:45.307 回答