当我输入错误的值时,脚本重置数据



我的问题是,当我输入不在JSON中的值时,脚本将重置所有收集的值。我试图与其他陈述一起执行此操作,但随后似乎循环不会通过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;
    }

默认情况下,当您单击表单中的提交按钮时,浏览器会导航到表单action属性中的URL。这使得在不使用Ajax并触发页面重新加载的情况下提交表格成为可能。

但是,在您的情况下,您要自己处理提交表单,因此您应该禁用默认行为。这就像在传递给onsubmit处理程序的事件对象上调用preventDefault一样简单

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

相关内容

  • 没有找到相关文章

最新更新