jquery无法根据选择选项禁用单选按钮

时间:2014-11-13 18:51:50

标签: javascript jquery html

我正在尝试根据下拉选择禁用单选按钮。这是代码。

<form id="" action="" method="get">
<table >
    <tr>
        <th>Test or Exam</th>
        <td>
            <select id="testid" name="testid">
                <option value="1">Blood Pressure</option>
                <option value="2">Cholesterol</option>
                <option value="4">Hearing test</option>
                <option value="5">HIV-AIDS</option>
                <option value="3">TB test</option>
            </select>
        </td>
    </tr>
    <tr>
        <th>Test Result</th>
        <td>
            <input type="radio" class="testresult" name="resultid" value="1"/>Positive
            <input type="radio" class="testresult" name="resultid" value="2"/>Negative
        </td>
    </tr>
</table>
</form>

我希望脚本在选择血压时禁用单选按钮。这是脚本

$(funtion(){
            $("#testid").change(
            function(){
                if($(this).val() === "1"){
                    alert("good");
                    $(".testresult").attr("disabled","disabled")
                }else{
                    $(".testresult").removeAttr('disabled')
                }

            })
        })


})

5 个答案:

答案 0 :(得分:1)

funtion替换为function - 此外,您缺少很多分号:

编辑,我刚刚找到额外的}) 加上我现在用更“最新”的attr函数替换了removeAttrprop

$(function(){
    $("#testid").change(
        function(){
            if($(this).val() == "1"){
                alert("good");
                $(".testresult").prop("disabled", true);
            }else{
                $(".testresult").prop('disabled', false);
            }

      });
});

工作jsfiddle:http://jsfiddle.net/northkildonan/kL1jyx56/

答案 1 :(得分:0)

这是小提琴:http://jsfiddle.net/37ehuxqs/1/

代码中存在一些嵌套问题。修正了这里:

$(function() {
    $("#testid").change(
        function() {
            if ($(this).val() === "1") {
                alert("good");
                $(".testresult").attr("disabled", true)
            } else {
                $(".testresult").attr('disabled', false)
            }
        });
});

答案 2 :(得分:0)

您在function中输入错误,并且您有额外的})并且考虑到您可能希望处理程序在页面加载时启动,最后添加.change()以触发{{ 1}}页面加载时并且change.prop()更受欢迎,它可以使代码更短,更容易阅读。

如果以前检查过的单选按钮仍然被检查困扰您(它不会被提交),您可以在.attr()中这样设置取消选中所有内容:

&#13;
&#13;
.prop()
&#13;
$(function(){
     $("#testid").on('change', function(){
         this.value !== "1" || alert( 'good' );
         $('.testresult').prop({disabled: this.value === "1", checked: false});
     })
     .change();
});
&#13;
&#13;
&#13;

答案 3 :(得分:0)

这是有效的

&#13;
&#13;
$( document ).ready(function() {
	$("#testid").on('change', function(){
		if($(this).val() === "1"){
			alert("good");
			$(".testresult").attr("disabled","disabled");
		}else{
			$(".testresult").removeAttr('disabled');
		}

	});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<form id="" action="" method="get">
<table >
    <tr>
        <th>Test or Exam</th>
        <td>
            <select id="testid" name="testid">
                <option value="">Select an option</option>
                <option value="1">Blood Pressure</option>
                <option value="2">Cholesterol</option>
                <option value="4">Hearing test</option>
                <option value="5">HIV-AIDS</option>
                <option value="3">TB test</option>
            </select>
        </td>
    </tr>
    <tr>
        <th>Test Result</th>
        <td>
            <input type="radio" class="testresult" name="resultid" value="1"/>Positive
            <input type="radio" class="testresult" name="resultid" value="2"/>Negative
        </td>
    </tr>
</table>
</form>
&#13;
&#13;
&#13;

答案 4 :(得分:0)

这样做:

<input type="radio" name="disableme" id=1> Animal
<input type="radio" name="disableme" id=2> Mammal
<input type="radio" name="disableme" id=3> Human

和这个

var radios = document.formName.disableme;

for (var i=0, iLen=radios.length; i<iLen; i++) {
radios[i].disabled = true;
} 

您不必添加ID;)