【问题标题】:how to prevent jquery to validate and submit data at the same time如何防止jquery同时验证和提交数据
【发布时间】:2011-06-23 09:13:13
【问题描述】:

我的团队要求我构建一个系统,作为我们下一个项目的编程原型,该项目将使用 codeigniter 和 jquery 开发。由于我是网络编程的新手,我需要相当长的时间来解决问题。而且下面的代码困扰了我两天。

$(function() {
var bln_valid = true;

$('#btn_save').click(function() {
    $('.warning-label').html('');


    if ($('#txt_customer_code').val() == '') {
        // did user provide customer code?
        $('#lbl_customer_code').html('Customer Code has to be filled in.');
        bln_valid = false;
    } else {
        // is the code unique?
        $.post('<?php echo base_url()."index.php/customer/is_code_exists" ?>', {
            txt_customer_code   : $('#txt_customer_code').val()
        },
        function(data) {
            if(data.error == undefined) {
                if (data['code_exists'] == 1) {
                    $('#lbl_customer_code').html('Customer Code is not available.');
                    bln_valid = false;
                }
            } else {
                $('#lbl_customer_code').html('Customer Code is not available.');
                bln_valid = false;
            }
        },'json'
        );                      
    }   

    if (bln_valid == false) {
        return false;
    } else {
        // insert the code to database
        $.post('<?php echo base_url()."index.php/customer/add" ?>', {
            txt_customer_code   : $('#txt_customer_code').val(),
        },
        function(data) {
            if(data.error == undefined) {
                $('#lbl_customer_code').html(data['key']);
                if (data['key'] == '') {
                    $('#lbl_customer_code').html('Failed Saving.');
                    return false;
                } else {
                    $('#lbl_customer_code').html('Successfully saving.');
                }
            } else {
                $('#lbl_customer_code').html('Failed Saving.');
                return false;
            }
        },'json');                      
    }                   
});});

所以我想在将客户代码插入数据库之前验证其唯一性。但似乎都使用 ajax 的验证和插入代码几乎同时执行。 bln_valid 在开始插入时仍保留其 TRUE 值,即使客户代码不是唯一的。

  1. 有没有办法让插入代码在验证完成后运行?我已阅读有关 jquery 队列的信息,但未能掌握该概念并将其应用于解决我的问题。
  2. 有没有更有效的方法来达到验证和提交数据的目的?

我尽量不使用任何插件,因为我被告知要尽可能少地使用任何外部作品。

感谢您的帮助。

【问题讨论】:

    标签: jquery ajax validation submit


    【解决方案1】:

    Jquery 有很多用于 ajax 提交和验证的插件。您可以考虑使用它们,而不是编写自己的逻辑。我推荐

    1. Jquery form plugin - 通过 ajax 提交表单。删除提交,制作一个按钮,单击该按钮通过ajax提交表单。

    2. Jquery Validation plugin - 根据类验证所有内容。您甚至可以使用 .addValidator 方法编写自己的逻辑。

    工作示例here

    【讨论】:

    • 在和我的队友讨论之后,我们同意试一试jquery验证插件。一切正常,除了检查客户代码唯一性的 ajax 回调没有运行。我在这里bit.ly/lZsyZW 发现了类似的问题。有什么想法吗?
    • abdul,感谢您的回复,并对我迟到的回复感到抱歉。我已经解决了我认为与我对 jquery 概念缺乏了解有关的问题。 (我真的不知道原因,所以我所做的只是重写了部分代码)。
    【解决方案2】:

    你试试Event.PreventDefault() ?

    【讨论】:

    • 我接受了 abdul 的建议,为我的项目使用验证插件。但我目前正在研究您的问题,以了解 preventdefault 如何解决我的问题。只是为了拓宽我的jQuery知识和经验。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    相关资源
    最近更新 更多