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/

また、おまけの質問として、マークアップからIDを省略して、入力のNAMEだけでそれを行うことは可能ですか?

UPDATE I-実用的なソリューション:

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

4

1 に答える 1

3

おまけの質問 - マークアップから ID を省略して、入力の NAME だけでそれを行うことは可能ですか?

名前を含め、jQueryセレクターで任意の属性を使用できます。

$('[name="foo"])

名前には括弧が含まれているため、おそらくそれらをエスケープする必要があります。

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

必要に応じて、それらを特定の要素に限定したり、他のセレクターと組み合わせたりすることもできます。

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

あなたの実際の質問に関しては、私の最初の推測は...間違っているのは、あなたの問題が空白であることです。やってみました:

#upload_image:input

代わりは?

私の2番目の推測も間違っています。問題は次のとおりです。

.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 に答える