0

我想在单击复选框时禁用输入框和按钮。

我的标记:

<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/

另外作为一个额外的问题 - 是否可以仅使用输入的 NAME 来做到这一点,从标记中省略 ID ?

更新我- 工作解决方案:

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

4

1 回答 1

3

奖金问题 - 是否可以仅使用输入的 NAME 来做到这一点,从标记中省略 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);
    })
});
于 2012-06-26T23:08:35.107 回答