2016-03-31 9 views
2

"input_id"というIDのフォームのテキスト入力フィールドがある場合。ページを読み込む際に、既存のデータをフィールドに入力しますJqueryのあるイベントから別のイベントへのフラグを渡す

id "form_submit"のボタンを使用してフォームを送信しているときに、フィールドが変更されているかどうかを確認したいと思います。私はその変化に関連する特別な行動をとることにしました。

In Jquery: 

$("#input_id").on("keyup",function(){ 
    //set a flag to indicate the field is altered 
}) 

$("#form_submit").on("click",function(){ 
    //check flag to see if #input_id is changed 
} 

グローバル変数を使用せずに、あるイベントにフラグを設定し、別のイベントでフラグを読み取るにはどうすればよいですか?

ありがとうございます。

+2

ので、質問は何ですか? –

+0

あるイベントでフラグを設定し、別のイベントでそれを読みたいと思っています。どうすればいいですか –

+0

現在の値と 'defaultValue'プロパティを単純に比較するだけの場合は、何も渡す必要はありません。 (これは、jQueryオブジェクトではなく、HTML要素オブジェクトのプロパティであることに注意してください。そのため、プロパティ$ {"input_id"} [0] .defaultValue'にアクセスする前に参照解除する必要があります。 ) – CBroe

答えて

3

var submit = $("#form_submit"); 

$("#input_id").on("keyup",function(){ 
submit.data("changed",true); 
}); 

submit.on("click",function(){ 
    if($(this).data("changed")){ //do something } 
} 
+1

ありがとう、これはトリックです! –

+0

@BarathBushanお手伝いをしてうれしい! :) –

+0

「フィールドが変更されているかどうかを確認したい」というメッセージが表示された場合、ユーザーがその変更をロールバックした後に変更を加えると、このトリックは間違っていると見なされます。 –

2

なぜ上限スコープではないのですか?あなたは、この目的のために.data()を使用することができます

var flag = false; 
$("#input_id").on("keyup",function(){ 
    // check stuff ... 
    flag = true; 
}); 

$("#form_submit").on("click",function(){ 
    if (flag) { 

    } else { 

    } 
} 
+1

私はこのオプションを考えました。しかし、私はグローバル変数を使用したくないです –

5

1つのオプションは、フォームデータの属性を使用することです:

$("#input_id").on("keyup",function(){ 
    //set a flag to indicate the field is altered 
    $(this).closest('form').data('changed',true); 
}) 

$("#form_submit").on("click",function(){ 
    //check flag to see if #input_id is changed 
    console.log($(this).closest('form').data('changed')); 
} 
+0

ありがとう、 "最も近い"機能 –

関連する問題