2011-12-18 9 views
1

jQuery 1.7.1とポストバックの変更機能に問題があります。基本的には、ドロップダウンでアイテムが選択されているかどうかによって、ボタンの無効な属性を切り替える必要があります。私が持っているコードでは:jQueryの変更機能がポストバックで2回発生しています

<input type="button" id="btnRed" value="show Red" disabled="disabled" class="spButton" /> 
<input type="button" id="btnBlue" value="show Blue" disabled="disabled" class="spButton"/> 
<input type="button" id="btnYellow" value="show Yellow" disabled="disabled" class="spButton" /> 

私は私のASP真

<asp:DropDownList ID="selAccount" runat="server" 
    onselectedindexchanged="selAccount_SelectedIndexChanged" AutoPostBack="true"> 
    <asp:ListItem Value="-1">select me</asp:ListItem> 
    <asp:ListItem Value="234">234</asp:ListItem> 
</asp:DropDownList> 

に設定のAutoPostBackとドロップダウンとjQueryを持っている:

$(document).ready(function() { 
    $("#selAccount").change(function() { 
     var selValue = $(this).val(); 

     if (selValue == '-1') { 
      $(".spButton").attr("disabled", "disabled"); 
     } 
     else { 
      $(".spButton").removeAttr("disabled"); 
     } 
    }); 
}); 

ポストバックが発生したときに必ず、ボタンがまま無効にする。私は有効なボタンでテストし、2回発射しています。私は別のアプローチ(ビン、アンバインド)無駄にしようとしました。コードビハインドでSelectedIndexChangedに設定された隠し変数を使ってこの問題を回避し、jQueryの隠し変数値を調べました。変更メソッドに問題はありますか?これを行うには良い方法がありますか?どんな洞察も認められるだろう。あなたがポストバックに値が変更されるたびに実行している場合のおかげで、

+0

... readyイベントにchangeイベントからあなたのコードを変更する場合に必要。 – joseluisrod

+0

コードが目的の動作で1回ちらつき、ポストバック後に無効に戻ります。 – joseluisrod

答えて

2

、その後、ページがリロードされるとjQueryによって行われた変更は失われます。..

どちらの自動ポストバックを停止(falseに設定)、または私はFirefoxでこの問題をテストし、私は同じ結果を得る

$(function(){ 
    var selValue = $("#selAccount").val(); 

    if (selValue == '-1') { 
     $(".spButton").attr("disabled", "disabled"); 
    } 
    else { 
     $(".spButton").removeAttr("disabled"); 
    } 
}); 
+0

ガービー、私の悪い..コードは既に準備完了イベントの中にあった。 – joseluisrod

+0

@joseluisrod、あなたは私のポイントを見落としました。私は 'change'イベントにバインドしないことを言っています..' ready'イベントの中でコードを実行してください(*ボタンを有効/無効にする実際のコード)。あなたが私のコードに気付いたら、私は '.change'の部分を削除していることがわかります。解決策は可能なら自動ポストバックを無効にすることです。可能であれば、私が投稿したコードを使用してください。 –

+0

それはトリックでした。ありがとうございました! – joseluisrod

関連する問題