2012-01-04 15 views
1

フォーム上のユーザーの選択に基づいて、ボタン(送信)のデータ確認属性の値を変更したい。私は、ドロップダウンリストの変更機能で次のように置く:データ確認値を無効にする

... 
    if($("#"+select_name).val() == "abc") 
    { 
     $(".variable_button").attr("data-confirm","abc is good choice!"); 

    } else 
    { 
     $(".variable_button").attr("data-confirm","abc would have been great but this is fine too..."); 
    } 
... 

私が直面しています問題は、それが空でない文字列を割り当てられると明らかにデータ確認を変更することができないということです。私はそれをサーバーコードの ""に設定しました。ユーザーが最初にドロップダウンリストを選択すると、上記の2つのメッセージのいずれかに変更されます。しかし、ユーザーがもう一度選択を変更すると、データ確認メッセージは変更されません。これはデザインごとにあるのですか、何か不足していますか?

var newData = ($("#"+select_name).val() == "abc") 
    ? "abc is good choice!" 
    : "abc would have been great but this is fine too..."; 

$(".variable_button").data("confirm", newData); 
+0

'data-confirm'属性は、メッセージを格納するために使用しているカスタムの' data-'属性です。 –

+0

ジョシュ - はい、それは正しいです。 – Tabrez

答えて

3

.data()を使用し、.attr()を使用しないでください。ここで

は、実施例(JSFiddle)です:

var counter = 1; 

$('#click').click(function() { 
    button = $('#click'); 
    console.log(button.attr('data-confirm')); 
    button.attr('data-confirm', 'this is test ' + counter); 
    console.log(button.attr('data-confirm')); 
    counter++; 
}); 

あなたはJSFiddleで問題をレポしようとすることはできますか?

質問を再読み込みすると、ユーザーが選択を2回目に変更したときにイベントハンドラが起動しないように見えます。イベントハンドラにブレークポイントを設定してヒットしたかどうかを確認してください。

+0

これは '.attr()'を使用するよりもクリーンですが、どちらも動作するはずです。 –

+0

ありがとうMatt! Josh - なぜ、.attr()がうまくいかなかったのか分かりません。しかし、私はそれを両方の方法で試しました。.data()メソッドは問題なく動作しました。 .attr()メソッドを使用すると、空の文字列から値を何か(一度)に変更することしかできず、それ以上の変更はできませんでした。 – Tabrez

0

jQueryのは、あなたが.attr()方法でdata-属性を更新することができないので、何か他のものが破壊されています

関連する問題