如果选择了单选按钮,则禁用文本区域?

时间:2015-04-17 08:50:32

标签: javascript jquery radio-button

我有一个表格,我希望"灰色" textArea直到" No"单选按钮被选中。

@Html.RadioButtonFor(p => Model.Questions[i].AnswerSelected, true, new { id="radio1" }) Yes
@Html.RadioButtonFor(p => Model.Questions[i].AnswerSelected, false, new { id="radio2" }) No
@Html.TextAreaFor(p => Model.Questions[i].ActionToTake, new { id="textArea" })

什么是接近这个的好方法?我对javascript很新,还有一些额外的文字解释了你正在做的事情会很好。

3 个答案:

答案 0 :(得分:3)

EDIT2: $("输入[name =' group1']")。更改侦听名为" group1"的广播组中的更改。当它触发时,检查发生了变化的位置(" $(this).val()==' no'"表示更改是在第二个单选按钮中触发的" no")的价值,然后你做你的逻辑。

EDIT(优于):

$("input[name='group1']").change(function(e){
    if($(this).val() == 'no') {
        $("#text1").prop('readonly', true); 
        $("#text1").css('background-color', '#EBEBE4');
    } else if($(this).val() == 'yes') {
        $("#text1").prop('readonly', false);
        $("#text1").css('background-color', '#FFFFFF');
    }
});

@Html.RadioButtonFor(p => Model.Questions[i].AnswerSelected, true, new { id="radio1", name="group1", value="yes" }) Yes
@Html.RadioButtonFor(p => Model.Questions[i].AnswerSelected, false, new { id="radio2", name="group1", value="no" }) No

https://jsfiddle.net/vaxc3eo5/3/

ORIGINAL:

使用JQuery:

使用readonly并添加背景颜色,使其具有与禁用相同的外观。

$("#radio2").change(function(){
    $("#text1").prop('readonly', true); 
    $("#text1").css('background-color', '#EBEBE4');
});
$("#radio1").change(function(){
    $("#text1").prop('readonly', false);
    $("#text1").css('background-color', '#FFFFFF');
});

https://jsfiddle.net/vaxc3eo5/2/

答案 1 :(得分:1)

Javascript函数可以为您执行此操作,如下所示:

<script type="text/javascript">
  function enableTextArea() {
     var el = document.getElementById("radio2");
     document.getElementById("textArea").readOnly = !el.checked;
  }  
</script>

HTML:

@Html.RadioButtonFor(p => Model.Questions[i].AnswerSelected, false, new { id="radio2", onclick = "enableTextArea()" }) No

答案 2 :(得分:0)

在JQuery中,也可以这样做:

$('#radio2').click(function(){
    $('#textArea').attr("disabled", false);
})