2011-09-25 64 views
-2

我已启用多发文本框使用jQuery。但是我不知道如果单选按钮没有被选中,如何重新启用它们。我必须对当前的代码进行哪些修改?启用和禁用文本框的jQuery

<script type="text/javascript"> 

$(document).ready(function() {  

    $(":radio[id^=check]").click(function() { 
     var textId = "#" + this.id.replace("check", "text"); 
     $(textId).removeAttr("disabled", "disabled").css('background-color', '#99FF66') 
    }); 

//alert("test"); 

}); 
</script> 
+0

我不确定有人知道你真的想要做什么或问。考虑更详细地描述你的场景。我猜想,有一段时间你会解释你想要做什么,有人会建议如何解决它。 –

+0

好的,所以目前我有多个单选按钮,涉及多个文本框。文本框全部禁用,以开始。此代码在单击某个单选按钮时启用某个文本框。但是,一旦单击单选按钮,然后取消单选按钮,什么也没有发生,它应该保持启用状态,当它应该禁用和恢复。所以,我的问题是。当单选按钮未被选中时,如何禁用文本框?或者当选择它,然后取消选择它?那有意义吗?对不起,我不清楚。 – Alex

回答

1

您可以使用单个处理程序做两个 - 当单选按钮没有被选中时禁用,当它启用时启用。使用@ AlienWebGuy的观察,您可以使用该属性值的检查测试,因为这是可以做到:

$(":checkbox[id^=check]").click(function() { 
    $("#" + this.id.replace("check", "text")) 
     .prop("disabled", $(this).filter(':checked').length == 0); 
}); 

当这个CSS再加

<style> 
    input:disabled { 
     background-color: #99ff66; 
    } 
</style> 
+2

理想的情况下,他会设置的CSS'输入:禁用{背景颜色:#99FF66;}'然后他可以消除像这样的情况:'$(文本).prop( '残疾人',$(本).filter( ':checked')。length == 0);' – AlienWebguy

+0

@AlienWebguy - 好主意,我会更新。 – tvanfosson

+0

这些工作,但如果您取消选中单选按钮,它不会再次禁用它。是因为我从一开始就禁用了文本框? @AlienWebGuy – Alex

2

更换$(textId).removeAttr("disabled", "disabled")通过$(textId).removeAttr("disabled")

,如果你阅读文档这是很明显的,removeAttr并不需要两个参数

0

你要处理的财产,而不是属性:

$(textId).prop('disabled',true);$(textId).prop('disabled',false');

0

我能够完成任务这样做。在财政上,我在我的文本框和单选按钮上有id。该单选按钮id =“check1”textbox id =“text1”,单选按钮id =“check2”textbox id =“text2”。然后在我的拒绝ID我有单选按钮id =“checker1”和文本框id =“text1”等。

因此,基于哪一个选择它将启用它并将其变为绿色,或禁用并将其变为红色。

这是代码。

<script type="text/javascript"> 

$(document).ready(function() { 

    //Goes through each and if click adds css and removes disable 
    $(":radio[id^=check]").click(function() { 
     var textId = "#" + this.id.replace("check", "text"); 
     $(textId).removeAttr("disabled").css('background-color', '#99FF66').css('color', '#000') 
     }); 

    //Goes through each and if checked adds disabled and turns red 
    $(":radio[id^=checker]").click(function() { 
     var textId = "#" + this.id.replace("checker", "text"); 
     $(textId).attr("disabled", "disabled").css('background-color', '#FF0033').css('color', '#FFFFFF') 
    }); 

//alert("test"); 

}); 
</script>