2012-04-16 14 views
1

メニューからユーザー選択で決定された隠しフィールドを無効にするフォームを作成しようとしています。当初、すべてのフィールドを非常に簡単に無効にすることができ、ユーザーが別のオプションを選択したときに特定のフィールドを再度有効にすることができます。しかし、私はすべてのフィールドをユーザが「場所の変更」をクリックしたときに再び無効にする必要がありますが、私はこの作業を行うことはできません!jQuery - 非表示の入力属性を更新できません

私のコードの背後にある目的は、明確にするために大きく編集されていますが、他の無関係な事柄が発生するため、完全にはわかりません。これは私が何をする必要があるかです:)

jQueryの、言えば十分:

$('input[name="hosted_button_id"]').attr("disabled",true); 

$('#changelocation').click(function(){ 
    $('input[name="hosted_button_id"]').attr("disabled",true); 
}); 


$('.deliveryselection').change(function(){  
    var deliveryLocation = $(this).val(); 
    $('input[title="' + deliveryLocation + '"]').removeAttr("disabled"); 
}); 

HTML:

<select class="deliveryselection"> 
    <option>Please select</option> 
    <option value="UK">UK</option> 
    <option value="Europe">Europe</option> 
    <option value="North America">North America</option> 
    <option value="Rest of World">Rest of World</option> 
</select> 
<a href="javascript:void(0)">Change location</a> 
<form> 
    <input type="hidden" name="cmd" value="_s-xclick"> 
    <input type="button" name="hosted_button_id" title="UK" value="UK"><br /> 
    <input type="button" name="hosted_button_id" title="Europe" value="Europe"><br /> 
    <input type="button" name="hosted_button_id" title="North America" value="North America"><br /> 
    <input type="button" name="hosted_button_id" title="Rest of World" value="Rest of World"><br /><br /> 
    <input type="submit" name="submit"> 
</form> 
​ 

私はすでにこれがで設定持っていますここにjsfiddle:http://jsfiddle.net/solomon/rS7nV/1/

EDIT 私はこの問題を発見したと思います。私の実際のコードでは、ボタンフィールドではなく、隠しフィールドを扱っていましたので、私の労働の成果を直接見ることができませんでした。私は、隠されたフィールドの無効状態を判断するためにFirebugを使用してきました。 jsfiddleで作業している間にコードをボタンに変換しただけで、コードが正常に機能することがわかりました(私はIDを削除した少年のエラーから離れています...あなたの助けを借りてくれてありがとう!)。 Firebugがレポートを更新していないことが判明していて、私のコードが正常に機能していたにもかかわらず、フィールドが無効になっていても無効になっていることがわかっています。それはちょっとイライラしています。私の午後はFirebugのバグで無駄になりました! :)

ネヴァーマインド - それがすべて修正されます:)

+1

'.prop( 'disabled'、true_or_false)'を使うことができます - 文字列属性を扱う必要はありません。 – ThiefMaster

答えて

3

問題は、ID changelocationを持つ要素を持っていないということです。 IDを追加しても問題ありません。

http://jsfiddle.net/rS7nV/4/

+0

ええと...私はちょっと気が狂っているように感じます:)しかし、全然ではありません。私が愚かにそれを編集したために、そのIDを持っていなかった唯一の理由は、私の元のソースコードはそれを持っていますが、まだ動作しません。少なくとも私は私のコーディングが健全であることを知っています - ありがとう:) – Doug

+0

助けてくれてありがとう、ジェームズ - 私は問題の一番下にあって、それに応じてオリジナルの投稿を編集しました... annoyingly私のコードは問題ありませんでしたデバッグに使用していたツール! – Doug

0

あなたが隠しフィールドIDを含むフォームを与える場合は、簡単に隠されたすべてのフィールドを無効にすることができます

$("#hiddenFormId input").attr("disabled", true); 
+0

本当に十分です - それはスクリプトを合理化する良い方法です - ありがとう:) – Doug

0

はdivのようにjQueryを使って呼び出す内部クラスを宣言以下は

jQuery( "。declariedclassname")。attr( "disabled"、true);

関連する問題