无法在CheckBox选择上禁用TextBox

时间:2015-04-20 17:22:37

标签: javascript jquery

我有一个@ Html.TextBox和一个@ Html.CheckBox,无论在@Html.TextBox中输入什么,我点击windows身份验证复选框的那一刻我希望我的@ Html.TextBox变为EMPTY和DISABLED

@using (Html.BeginForm())
{
  <div id="emailtext">@Html.TextBoxFor(m=>m.Email)</div>
  <div id="chk">@Html.CheckBox("CheckWindowsAuth") @Html.Label("Use windows authntication")</div>
}

我的jquery不是帮助

<script src="my jquery path"></script>
<script>
 $(document).ready(function(){
    $("#chk").click(function(){
       $("#emailtext").val("");
       $("#emailtext").attr("disabled", "disabled"); 
    });
 });   
</script>

请帮我知道我哪里错了... 感谢

4 个答案:

答案 0 :(得分:0)

您需要将.val.attr应用于输入,而不是包含div。这应该有效:

 $(document).ready(function(){
    $("#chk").click(function(){
       $("#Email").val("");
       $("#Email").attr("disabled", "disabled"); 
    });
 }); 

但是,Razor的辅助方法有时很时髦,因此您可能需要右键单击并检查浏览器中输入的元素,并确保id为Email

答案 1 :(得分:0)

根据您的代码,#chk是div,同样#emailtext也是div。

如果元素在div内部,则需要更改选择器

$(document).ready(function(){
    $("#chk input[type=checkbox]").click(function(){
       $("#emailtext input").val("");
       $("#emailtext input").attr("disabled", "disabled"); 
    });
 });   

您可能还需要检查复选框的值。是否在调整输入框之前检查它。

 $(document).ready(function(){
        $("#chk input[type=checkbox]").change(function(){
           if($(this).is(":checked")) {
              $("#emailtext input").val("");
              $("#emailtext input").attr("disabled", "disabled"); 
           } else {
                $("#emailtext input").removeAttr("disabled"); 
           }
        });
     });   

答案 2 :(得分:0)

我认为$ .click让你失望。

试试这个

$(document).ready(function(){
    $("#chk").change(function(){
        if(!$(this).is(':checked')){
           $("#emailtext input").removeAttr("disabled");  
        }
        else{
           $("#emailtext input").val("");
           $("#emailtext input").attr("disabled", "disabled"); 
        }

    });
 }); 

https://jsfiddle.net/0hwsLs4y/


编辑,上面的内容是正确的,ids是在容器上,而不是输入

答案 3 :(得分:0)

您可能需要使用prop prop而不是attr attr,因为自jQuery 1.6以来,某些元素已弃用attr来获取或检索值。

  

从jQuery 1.6开始,.attr()方法为属性返回undefined   尚未设定。检索和更改DOM属性,例如   选中,选中或禁用表单元素的状态,使用   .prop()方法。