2012-06-26 43 views
0

我想禁用一个输入框和一个按钮,当一个复选框被点击。JS - jQuery - 启用禁用复选框的表单域

我的标记:

<h4>Random or Not </h4> 

    <!-- Use Random Image --> 

    <label><input name="o99_aufu_options[o99_aufu_random]" id="o99_aufu_options[o99_aufu_random]" value="1" checked="checked" type="checkbox">Use Random Image ? <em></em></label><br> 

    <!-- If the above not checked - needs to be enabled -->       
    Upload Image <label for="upload_image"> <input id="upload_image" size="36" name="o99_aufu_options[o99_aufu_upload_image]" value="" type="text"> <input id="upload_image_button" value="Choose Image or upload" type="button"> </label> 

的jQuery:

if (jQuery('#o99_aufu_options[o99_aufu_random]').is(':checked')) { 
     jQuery('#upload_image :input').attr('disabled', true); 
    } else { 
     jQuery('#upload_image_button,#upload_image :input').removeAttr('disabled'); 
    } 

好 - 很显然,如果我问我在这里 - 它不:-)工作

小提琴:

http://jsfiddle.net/obmerk99/6jFMf/3/

也作为一个额外的问题 - 是否有可能做到这一点只与输入的名称,从标记中省略ID?

更新我 - 工作的解决方案:

http://jsfiddle.net/obmerk99/6jFMf/20/

回答

3

奖金的问题 - 是否有可能做到这一点只有在输入的名称,从标记省略ID?

您可以在jQuery选择使用任何属性,包括名称:

$('[name="foo"]) 

因为你们的名字有括号,你可能不得不逃离他们:

$('[name="o99_aufu_options\[o99_aufu_random\]"]') 

您也可以根据具体要素对其进行限定,或将其与其他选择器结合使用:

$('input.someClass[name="o99_aufu_options\[o99_aufu_random\]"]') 

至于你的实际问题,我的第一个猜测是错的 是你的问题是空白;你有没有试过:

#upload_image:input 

取而代之?

我的第二个猜测也是错误 的问题是:

.prop('disabled', true); 

您是否尝试过:

.prop('disabled', 'disabled'); 

好的,我真的看着你的小提琴,有几件事是错的;这里有一个工作的例子,让我知道如果你有问题,但希望它是不言自明的:

jQuery(function() { 
    jQuery('input[name="o99_aufu_options\[o99_aufu_random\]"]').click(function(){ 
     var isChecked = jQuery(this).is(':checked') ; 
     jQuery('#upload_image:input').prop('disabled', isChecked? 'disabled' : null); 
    }) 
}); 
+0

Thaks为您的答案,但尝试在小提琴 - 它似乎并没有工作。 –

+0

我已经更新了我的答案;你能回顾我最新的建议吗? – machineghost

+0

谢谢 - 它很好。唯一的问题是,当文档加载时 - 该功能没有控制它。我添加了一个“禁用”属性作为默认值(请参阅:http://jsfiddle.net/obmerk99/6jFMf/20/)。顺便说一句 - 你确实知道你可以通过点击“更新”保存小提琴变化,然后在这里发布新的链接? –