2017-12-01 3 views
0

私の問題は、jsonにはないエントリ値があるときにすべての収集値をリセットすることです。私はステートメント中にこれを他のものとやろうとしましたが、forループがjsonをループしないようです。どうすればこの問題を解決できますか?私が間違った値を入力したときにスクリプトがデータをリセットする

arr = [[123, "foo", 143,99],[456, "bar", 99,99],[789, "spam", 100]] 

完全なコードがあります:https://pastebin.com/xu0tKVbJ

スクリプト:デフォルトで

var total = 0; 
    var price = 0; 
    var productsJSONList = (("{{products_json}}").replace(/&(l|g|quo)t;/g, function(a,b){ 
     return { 
      l : '<', 
      g : '>', 
      quo : '"' 
     }[b]; 
    })); 
    var prod = JSON.parse(productsJSONList); 



    document.getElementById('entry').onsubmit = enter; 

    function enter() { 
     var entry = document.getElementById('newEntry').value; 
     for (var i = 0; prod.length; i++) { 
      var obj = prod[i]; 
      if (obj[0].toString() === entry.toString()) { 
       price = parseFloat(obj[2]); 


       currency = currencyFormat(price); 
       document.getElementById('entries').innerHTML += '<tr><td></td><td>' + currency + '</td></tr>'; 
       total += price; 
       document.getElementById('total').innerHTML = currencyFormat(total); 

       document.getElementById('newEntry').value = ''; 
       return false; 
      } 
     } 
    } 


    function currencyFormat(number) { 
     var currency = parseFloat(number); 
     currency = currency.toFixed(2); 
     currency = currency + ' zł'; 
     return currency; 
    } 
+1

に渡されるイベントオブジェクトにpreventDefaultを呼び出すのと同じくらい簡単です。オフサイトのリンクは時間とともに消滅します。 – jmargolisvt

+1

フォームを送信しています。 'event'を' enter'に渡し、 'event.preventDefault()'に渡すべきです。これにより、検証が完了してから必要なときに提出できるようになるまで、フォームの送信が停止されます。 – Andy

+0

私はグーグルにしようとしましたが、どうやってそれを行うのか、どこに置く必要があるのか​​分かりません。私は私のジャンゴプロジェクトのためにそれを行うためにjavascriptを使用していますので、私の知識が不足して申し訳ありません。 – Wakun

答えて

1

、フォーム内の送信ボタンをクリックすると、お使いのブラウザがあなたをナビゲート アレイは、このようになりますフォームのaction属性のURLに追加します。これにより、ajaxを使用せずにフォームを送信し、ページの再読み込みをトリガーすることができます。

しかし、あなたの場合は、フォームの送信を自分で処理したいので、デフォルトの動作を無効にする必要があります。これは、ここにコードを貼り付けてくださいあなたのonsubmitハンドラ

function enter(event) { 
    event.preventDefault(); 
    ... 
} 
+0

私は答えを見る前にそれをする方法を考え出しましたが、あなたの問題の説明は私のために非常に便利です。ここに私が望むように動作するコードがあります:document.getElementById( 'entry')。addEventListener( 'submit'、enter); function enter(イベント){ event.preventDefault(); – Wakun