JS - jQuery - 启用带复选框的禁用表单字段

时间:2012-06-26 23:06:03

标签: javascript jquery forms

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

我的标记:

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

1 个答案:

答案 0 :(得分: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);
    })
});