【问题标题】:Combine .toggle() and form validation结合 .toggle() 和表单验证
【发布时间】:2012-05-30 09:34:42
【问题描述】:

我有一个使用此插件验证的表单:http://bassistance.de/jquery-plugins/jquery-plugin-validation/

我决定使用.toggle()向这个表单添加字段,如果点击链接就会出现。

这是表格:

<form id="identification" action="Test.php" method="post">
    <fieldset>
        <legend>Identification</legend>
        <p>
            <label for="firstName">First name</label>
            <input id="firstName" type="text" name="firstName" class="required"/>
        </p>
        <p>
            <label for="lastName">Last name</label>
            <input id="lastName" type="text" name="lastName" class="required"/>
        </p>
        <p>
            <label for="email">E-mail address</label>
            <input id="email" type="text" name="email" class="required email"/>
        </p>
        <div class="hiddenFields">
            <p>
                <label for="zip">Zip code</label>
                <input id="zip" type="text" name="zip" class="required zip"/>
            </p>
            <p>
                <label for="city">City</label>
                <input id="city" type="text" name="city" class="required"/>
            </p>        
        </div>
        <p class="showFields"><a class="toggle" href="#">Click here</a> for more info</p>
    </fieldset> 
    <p class="submit"><input type="submit" value="Submit"/></p>
</form>

.hiddenFields div 在我的 CSS 中设置为 display: none;

这是验证脚本:

$(document).ready(function(){
    $("#identification").validate({
        rules: {
                "zip": { digits:true, minlength:5, maxlength:5 }
        }
    });

    jQuery.extend(jQuery.validator.messages, {
        required: "This field is needed.",
        email: "Please enter a valid e-mail address.",
        digits,minlength,maxlength: "Please enter a valid zip code.",
        minlength: "Please enter a valid zip code.",
        maxlength: "Please enter a valid zip code."
    });
});

这里是切换脚本:

$(document).ready(function(){
    $("a.toggle").click(function(e){
        e.preventDefault();
        $(".hiddenFields").toggle("fast");
    });
});

现在,没有.hiddenFields div 和没有.toggle(),一切正常,但是当我尝试添加它时,验证不再起作用,我真的不明白为什么。

当字段被隐藏和不被隐藏时,我如何设法验证此表单?它目前在这两种情况下都不起作用。

感谢您的帮助。

【问题讨论】:

  • afaik jQuery 没有内置验证。你用的是哪个插件?
  • 你能在 jsfiddle.net 上放一个重现你的问题的功能示例吗?
  • You can use this as a starting point。这似乎奏效了。也许我误解了这个问题。
  • 不,就是这样。你到底修改了什么,因为这对我的设置不起作用?谢谢。
  • 我删除了导致语法错误的哈希中奇怪的“digits,minlength”位。我原以为这是一个复制/粘贴错误,但没有意识到这是问题所在。

标签: jquery forms validation toggle


【解决方案1】:

Here it is on jsFiddle.

你有一个流氓digits,minlength, 导致语法错误:

jQuery.extend(jQuery.validator.messages, {
   required: "This field is needed.",
   email: "Please enter a valid e-mail address.",
   digits,minlength,maxlength: "Please enter a valid zip code.",
   minlength: "Please enter a valid zip code.",
   maxlength: "Please enter a valid zip code."
});

你还有两次maxlength

改成这样就可以解决问题了:

jQuery.extend(jQuery.validator.messages, {
   required: "This field is needed.",
   email: "Please enter a valid e-mail address.",
   minlength: "Please enter a valid zip code.",
   maxlength: "Please enter a valid zip code."
});

【讨论】:

  • 这绝对是一个复制/粘贴错误,我什至没有注意到它。感谢您的帮助!
  • @morgi 我不知道您使用哪个浏览器,但如果您在 Chrome 或 IE 中加载开发者工具(按 F12 显示)或在 Firefox 中加载 Firebug extension(也按 F12 显示) 并查看控制台选项卡,您可以检查发生的任何 JavaScript 错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
  • 2015-11-07
  • 2015-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多