【问题标题】:question about jQuery inline form validation关于 jQuery 内联表单验证的问题
【发布时间】:2011-09-04 10:09:49
【问题描述】:

这是我正在尝试使用的关于 jQuery 内联表单验证的链接 http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/

一切看起来都不错,但我有一个小问题

我有一个使用这种验证的输入

'validate[length[6,15]]'

它检查输入值的长度是否小于 6 或大于 15 并给出错误。

现在我想要添加输入值 length=0 的机会,因此验证不会触发任何错误消息。

这可能吗?

更新

这是提交拦截功能

<script type='text/javascript'>
  $(document).ready(function() {
$('#standart_form').validationEngine();
 $('#standart_form').submit(function() {
  return false;
 });
 });
  </script>

现在当我使用这个'validate[length[6,15]]' 时,一切正常。但是如果我尝试使用新的自定义函数,整个表单都会提交自己破坏我基于 ajax 的应用程序。

【问题讨论】:

    标签: javascript jquery validation


    【解决方案1】:

    您使用的插件不支持开箱即用,但它的自定义功能允许您自己实现该行为。

    例如,您可以指定在验证字段时使用的正则表达式。您需要将其添加到您的翻译文件中:

    "emptyOrLengthBetween6And15": {
        "regex": /^$|^.{6,15}$/,
        "alertText": "* Empty, or between 6 and 15 characters long"
    },
    

    然后您可以在custom 验证器中引用它:

    class="validate[custom[emptyOrLengthBetween6And15]]"
    

    您也可以编写自己的验证函数:

    function checkEmptyOrLengthBetween6And15(field, rules, i, options)
    {
        var val = field.val();
        if (val.length > 0 && (val.length < 6 || val.length > 15)) {
            return "* Empty, or between 6 and 15 characters long";
        }
    }
    

    然后在 funcCall 验证器中使用它:

    class="validate[funcCall[checkEmptyOrLengthBetween6And15]]"
    

    【讨论】:

    • 非常感谢!我会尝试制作自定义正则表达式
    • 还有一个问题,我在ajax调用并由ajax提交的表单中使用它。我也有 javascript 函数可以防止 php 在按下提交按钮时提交表单。当我使用标准验证功能时,一切正常。但是当我使用您的自定义时,它可以工作,但也可以通过 php 提交表单。你知道如何防止自定义函数自动提交吗?
    • @David,对不起,我的错,该函数应该返回错误消息,而不是布尔值。答案已相应更新。
    • 当我按下提交时它会提交整个表单:(如果我使用默认函数则不会提交表单所以我的 ajax 工作正常。这就是问题:(
    • @David,根据插件的文档,应该没有任何区别。你能用更多的代码更新你的问题,尤其是你用来阻止表单提交的函数吗?
    猜你喜欢
    • 1970-01-01
    • 2021-11-27
    • 2016-04-10
    • 2011-07-17
    • 2017-08-29
    • 1970-01-01
    相关资源
    最近更新 更多