0

我有一个网页,其唯一的输入是采购订单。他们必须输入采购订单,并且必须包含字母、数字、破折号、下划线和/或句点,并且长度必须在 2 到 15 个字符之间。我相信我可以使用我继承的代码进行所有这些工作(我是 jQuery 新手)。

但是,如果所有这些测试都通过了,我还需要对我们的数据库进行远程测试,以查看用户的公司是否已经使用了该 PO。如果他们有,我需要警告他们并让他们选择输入不同的值或提交输入的值。这就是我卡住的地方。

$(document).ready(function(){
$.validator.addMethod("noSpecialChars", function(value, element) {
    return this.optional(element) || /^[a-zA-Z0-9-_.]+$/i.test(value);
}, "Ignored");

jQuery.validator.messages.required = "";
$("#form1").validate({
    invalidHandler: function(e, validator) {
        var errors = validator.numberOfInvalids();

        if (errors) {
            var message = errors == 1
                ? 'PO must contain only letters, numbers, dashed, underscores or periods and must be between 2 and 15 characters long.'
                : 'You missed ' + errors + ' fields.  They have been highlighted below';
            $("div.productError span").html(message);
            $("div.productError").show();
        } else {
            $("div.productError").hide();
        }
    },

    onkeyup: false,
    submitHandler: function(form) {
        $("div.productError").hide();
        form.submit();
    },

    rules: {
        po_number: {
            required: true,
            noSpecialChars: true,
            rangelength:[2,15]
        }
    },

    messages: {
        po_number: {
            required: 'blah',
            noSpecialChars: 'blah',
            rangelength: 'blah'
        }
    },
    debug:true
});

});

4

2 回答 2

0

我现在清楚多了。

考虑到您的评论并阅读一些文档,我建议对.submitHandler.

查看文档,仅当表单实际有效时才调用该回调,即在您的检查返回 true 之后。然后,在提交表单之前,您可以执行另一次检查,如果也返回 true,请提交表单。否则弹出您需要对客户说的任何内容。

从文档:

表单有效时处理实际提交的回调。获取表单作为唯一参数。替换默认提交。验证后通过 Ajax 提交表单的正确位置。

第二个粗体部分让我对您的代码有点怀疑......您似乎再次重新提交您的表单,从而将其传递给另一个验证。也许我弄错了那部分。如果是这样,我很抱歉。

于 2012-08-09T16:38:22.150 回答
0

如果您使用的是 jquery 验证器插件,那么您可以轻松地使用远程方法来执行此操作

于 2012-08-09T16:41:22.207 回答