首页 > 解决方案 > jQuery提交函数多次添加数据

问题描述

我有这个功能,我用来根据一些规则存储物品(凭证代码)......

$("#serial_number").submit(function (e) {
        e.preventDefault();
console.log('started');
        if (param == 'groupon' || param == 'livingsocial') {
            var secretS = $('#serial').val();
            var secretP = $('#pin').val();

            if ((/(?=[a-fA-F0-9]*[a-fA-F])[a-fA-F0-9]{10}/.test(secretS) === true) || (secretS.length == 13)) {


                var s = $('#serial').val();
                var p = $('#pin').val();
                var item = {}
                item["serial"] = s;
                item["pin"] = p;
                item["product_code"] = '74';
                item["promo_code"] = '74';
                item["covers"] = 2;

                jsonObj.push(item);

正如您所看到的,根据我在 IF 条件下编写的 rexEg 规则,我添加了一个项目,jsonObj所以如果它有效,我将一个项目推入 jsonObj。

如果我根据 123456789a 之类的规则只键入一次正确的序列号,一切都很好,我有这个[{serial: "123456789a", pin: undefined}]很好......

问题是如果:

  1. 尝试 - 用户输入类似 1234 的内容并尝试提交表单,但基于 o 规则其项目未存储到 jsonObj

  2. 尝试 - 用户类型 ggghhh55 也未存储到 jsonObj

  3. 用户最终提交了正确的序列号,例如(123456789a),但随后又添加了 3 次,所以我得到了这个:

    [{序列:“123456789a”,引脚:未定义},{序列:“123456789a”,引脚:未定义},{序列:“123456789a”,引脚:未定义}]

为什么?为什么提交表单添加项目3次...应该只添加一次...

最后,当用户输入正确的序列号时,表单会提交之前的尝试次数......所以如果有 3 次不成功的尝试,表单会提交 3 次......

标签: javascriptjqueryform-submitsubmit-button

解决方案


似乎您需要在每次尝试后重置您的 jsonObj


推荐阅读