【问题标题】:how to disable jquery date picker on radio button如何在单选按钮上禁用 jquery 日期选择器
【发布时间】:2009-05-05 10:23:40
【问题描述】:

我是 jQuery 的新手。任何帮助将不胜感激

我有两个单选按钮和两个文本框,我在其中使用 jquery 显示日期。

当我单击 Radio1 时,我应该能够在两个文本框中选择日期,但是当我单击 Radio2 时,我不应该能够在 text2 字段中选择日期。应该禁用 text2 字段,并且 jquery 日期选择器不应该工作。

我已禁用 text2 字段,但日期功能仍在工作。

--

我的代码放在这里

<script language='javascript'>
<!-- //
function setReadOnly(obj)
{
if(obj.value == "yes")
{
document.forms[0].text2.style.backgroundColor = "#ffffff";
document.forms[0].text2.readOnly = 0;
document.forms[0].text2.value = "";

} else {
document.forms[0].text2.style.backgroundColor = "#eeeeee";
document.forms[0].text2.readOnly = 1;
document.forms[0].text2.value = "Not applicable!";
document.forms[0].number = disbaled;

}
}
// -->
</script>
<script> 
$(document).ready(function() {
    $("#text1").datepicker
    ({
        showOn: 'button', buttonImage: 'images/cal.gif', buttonImageOnly: true,
        dateFormat: 'dd-mm-yy',
        numberOfMonths: 2,
        minDate:0

    })
    $("#text2").datepicker
    ({
        showOn: 'button', buttonImage: 'images/cal.gif', buttonImageOnly: true,
        dateFormat: 'dd-mm-yy',
        numberOfMonths: 2,
        minDate:1

    })
})
</script> 
</head>
<body>
<form>
<input type=radio name="update" value="yes" checked onclick="setReadOnly(this)">
Radio1 <br />
<input type=radio name="update" value="no" onclick="setReadOnly(this)">
Radio2 <br />
<input name="text1" type="text">
<input name="text2" type="text">
<select name="number">
<option value="11">11</option>
<option value="12">12</option>
</select>
</form>

【问题讨论】:

    标签: jquery html css


    【解决方案1】:

    在 jQuery 方式中,您必须将 setReadOnly 函数代码中的代码更改为:

    function setReadOnly(obj){
       if(obj.value == "yes"){
         $('#text2').css('backgroundColor','#ffffff');
         $('#text2').removeAttr('readOnly');
         $('#text2').val('');
         $('#text2').datepicker('enable');
         $('#number').removeAttr('disabled');
       } 
       else {
         $('#text2').css('backgroundColor','#eeeeee');
         $('#text2').attr('readonly','readonly');
         $('#text2').val('Not applicable!');
         $('#text2').datepicker('disable');
         $('#number').attr('disabled',true);
       }
    }
    

    编辑:虽然上面的代码工作得很好,正如@Deviant 指出的那样,相关的方法可以链接起来以充分利用 jQuery 的强大功能。

    function setReadOnly(obj){
       if(obj.value == "yes"){
         $('#text2').css('backgroundColor','#ffffff')
                    .removeAttr('readonly')
                    .val('')
                    .datepicker('enable');
         $('#number').removeAttr('disabled');
       } 
       else {
         $('#text2').css('backgroundColor','#eeeeee')
                    .attr('readonly','readonly')
                    .val('Not applicable!')
                    .datepicker('disable');
         $('#number').attr('disabled',true);
       }
    }
    

    【讨论】:

    • 那不是 jQuery 时尚……这是…… $("#text2").css().removeAttr().val().datepicker();
    • 我同意,但是和原来的代码相比,要好很多。
    【解决方案2】:

    在您的 setReadOnly() 函数中尝试以下操作

    function setReadOnly(obj) {
        $("#text1").datepicker('disable');
        $("#text2").datepicker('disable');
    }
    

    【讨论】:

      【解决方案3】:

      datepicker 在焦点上被调用。下面的代码将根据您的情况停止此操作

       $("#text2").bind('focus', function (e) {
                     var value =  $('input[name=update]:checked').val();
                     if (value == "no")
                         e.stopImmediatePropagation();                    
                  });
      

      【讨论】:

        猜你喜欢
        • 2020-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多