2010-12-22 12 views
1

データを入力するためにHTMLフォームを使用しています。私は、jQueryを使ってフォームの「プレビュー」ボックスをn秒ごとにリフレッシュしますが、これはコンテンツの変更時にのみ実行して、不要なちらつきや無駄な連続リフレッシュを避ける必要があります。 Javascript/jQueryでこれをどのように起動できますか?フォームのINPUTフィールドでコンテンツの変更をテストする必要があります。あなたは.change()を使用する必要がAjaxコンテンツリフレッシュ(変更された場合のみ)

答えて

1
var isFormChanged = false; 

$("input").change(function() { 
    isFormChanged = true; 
}); 

setInterval(function() { 
    if (isFormChanged) { 
     refresh(); 
     isFormChanged = false; 
    } 
}, 15000); 
+0

完璧に動作します!ありがとう! TEXTAREAフィールドでコードを試しましたが、フォーカスがフォームの他の要素に移動したときにのみ機能します。どんなヒント? – Riccardo

+0

@Riccardoこれは 'change'イベントの仕組みです。あなたは 'keyup'イベントを代わりに使ってみることもできますが、それは不必要なリフレッシュにつながります。別のオプションは、フォームを文字列に 'serializeする 'ことです(http://api.jquery.com/serialize/)。 n秒ごとに、フォームをもう一度シリアル化し、以前のシリアル化された値と比較します。それらが異なる場合は、リフレッシュしてください。 – Emmett

+0

よろしく、ありがとう – Riccardo

1

$("#input_id :input").change(function(){ 
    ajax_refresh_handler(this); 
}); 
+1

セレクタ '$( "#フォームID:入力が")'このに適しだろう、と思います。 – karim79

+0

@ karim79あなたは正しいです。 –

+0

'$(":input#input_id ")'は入力から降順の '#input_id'を探します。それは何にもマッチしません:)スペースは* descendant *セレクタを意味します。フォームから降順で入力要素を一致させたいとします。 – karim79

関連する問題