Javascript if if using using:checked和.bind但只有一个选项有效

时间:2014-01-03 03:37:05

标签: javascript jquery html if-statement radio

我正在尝试创建一个覆盖按钮来禁用我正在构建的表单的自动完成,并且如果选择该按钮,则希望使用Javascript使div“manualOverrideWarning”显示警告。问题是该功能仅在用户第一次按下按钮时起作用,但是一旦关闭覆盖,则不会删除警告。我在代码中如何使用Javascript错误的任何和所有指针将不胜感激!谢谢!

HTML:

    Manual Overide: 
            <label>No <input type="radio" 
name="manualOverride" id="manualOverrideNo" value="no" checked /></label>
            <label>Yes<input type="radio" 
name="manualOverride" id="manualOverrideYes" value="yes" /></label>

            <div id="manualOverrideWarning">test</div>

使用Javascript:

$('#manualOverrideYes, #manualOverrideNo').bind('change', function () {
    if($('input[name="manualOverrideYes"]:checked')) {
        $('#manualOverrideWarning').text('Autocomplete Disabled!');
    } else {
    if($$('#manualOverrideWarning').text(''));
    }
});

再次感谢你们!你们都是我的英雄!

2 个答案:

答案 0 :(得分:2)

我会检查is()

if($('input[name="manualOverrideYes"]').is(':checked')) {

或者如果您喜欢原始版本,那么您需要检查length属性以查看是否实际返回了任何结果:

if($('input[name="manualOverrideYes"]:checked').length)

此外看起来你有一个拼写错误:

if($$('#manualOverrideWarning').text(''));

我认为应该是

if($('#manualOverrideWarning').text(''));

答案 1 :(得分:2)

您需要使用.is()来针对选择器

测试所选元素
if($('input[name="manualOverrideYes"]').is(':checked')) {

$('input[name="manualOverrideYes"]:checked')返回一个jQuery包装器对象,它始终是真实的。

如果选中该复选框,那么jQuery包装器将包含1个元素else 0元素,但仍将返回一个对象。

另一种使用它的方法是测试返回对象的长度,如

if($('input[name="manualOverrideYes"]:checked').length) {