2011-06-25 11 views
1

フォームには複数のフィールドがあり、そのうちの1つは「カウンタ」であり、常に変化します。フォームが編集されるとき、私はいくつかのフィールドが変更されているかどうかを追跡し、提出時に変更フィールドの数に "カウンタ"フィールドを設定する必要があります。たとえば、カウンタの値が10でfield1、field2、field3が変更されている場合は、フォームのサブミットカウンタを13に増やす必要があります。古い値と新しい値のフォームを比較する

以下は、1つのフィールドだけですが、正しく動作しません。私はまた、1つのフィールドだけでなく、他のいくつかのフィールドもチェックする必要があります。どんな助けもありがとうございます。ありがとう!

$(document).ready(function(){ 
    var oldVal = getOldValue("field1"); 
    var oldCounter = parseInt(getOldValue("Counter")); 
    var curCounter; 

    $('field1').change(function(){ 
     var newVal= $(this).val(); 

      if(oldVal.val() == newVal.val()){ 
       curCounter = oldCounter +1; 
       setField("Counter", parseInt(curCounter)); 
      } 

    }); 

}); 
+0

「getOldValue」とは何ですか? –

答えて

0

ifステートメントが正しくありません。値が変更されたときには(.change())火災、まだあなたがチェックされている値はまた、.val()はそうjQueryオブジェクトを返すgetOldValue()機能しない限り、jQueryオブジェクトのメソッドであるif(oldVal.val() == newVal.val())

を通じて同じであれば、あなたのif声明はおそらくあなたがそれがすることを期待していることを行うつもりはありません。

$(document).ready(function(){ 

    var oldCounter = parseInt(getOldValue("Counter"), 10); // use the second argument '10' here or you might get strange results 
    var curCounter = oldCounter; 


    $('.field').each(function() { 
     // store the old value 
     $(this).data("oldValue", getOldValue($(this).attr("id"))); 
    }) 
    .change(function(){ 
     // compare values, increase counter if it is different than the original value 
     if($(this).data("oldValue") != $(this).val()) { 
      curCounter++; 
      setField("Counter", curCounter); 
     } 
    }); 

}); 

未テストコードが、私は何だろうと何

は、あなたが簡単に.change()イベント内からもアクセスできるように、フォームフィールドのdata属性内のフォームフィールドのoldValuesを保存するようなものですあなたは、要点を取得し、これは私が

*気づいた

0

3つの事に役立ちます願っています。あなたはそれが* var newVal = $(this).val(); if (oldVal == newVal).....

のようなものである必要があり、二回newValにの値をチェックしています。 oldValue変数の場合は、 var oldVal=$('#filed1_id').val();これははるかに簡単になり、オブジェクトではなく必要な値を取得しますが、これは処理が簡単です。

*。あなたは提出時に変更を確認する必要があると言いますが、変更をチェックしています。変更すると、必要なときに頻繁にチェックすることになります。

もう一度、getOldValueが何をしているか知っているといいでしょう。 幸運

0

フォームの送信時にユーザーがフィールドを変更したかどうかを知りたいと仮定します。 .data()を使用して、どのフィールドが元の値から変更されたかを把握するのが最も簡単です。他のポスターがあなたのコードで.val()を重複して呼び出すと述べた場合、!=の代わりに==が間違って使用され、jQueryオブジェクトを正しく使用していない可能性があります。

このフィドルはあなたの問題に対処する必要があります:http://jsfiddle.net/EYjxP/

関連する問題