2011-01-05 43 views
1

我想使用这个插件:http://docs.jquery.com/Plugins/Validation如何在jQuery中进行客户端表单验证?

哪里#user_new是我的形式ID,这是我的代码如下所示:

$('#user_new').validate({ 
    rules: { 
     user[username]: "required", 
     user[email]: { 
      required: true, 
      email: true 
     } 
    }, 
    messages: { 
     user[username]: "Please specify your name", 
     user[email]: { 
      required: "We need your email address to contact you", 
      email: "Your email address must be in the format of [email protected]" 
     } 
    } 
}) 

在这些是我怎么输入字段时看呈现页面时(由Rails的生成):

<input class="clearField curved" id="user_f_name" name="user[f_name]" size="30" type="text" value="First Name" /><br /> 
     <input class="clearField curved" id="user_l_name" name="user[l_name]" size="30" type="text" value="Last Name" /><br /> 
     <input class="clearField curved" id="user_username" name="user[username]" size="30" type="text" value="Username" /><br /> 
     <input class="clearField curved" id="user_password" name="user[password]" size="30" type="password" value="Password" /><br /> 
     <input class="clearField curved" id="user_password_confirmation" name="user[password_confirmation]" size="30" type="password" value="Password" /><br /> 
     <input class="clearField curved" id="user_email" name="user[email]" size="30" type="text" value="Email Address" /><br /> 

我只是想先验证用户名&电子邮件。然后从那里拿走。

对于我的生活,我无法弄清楚如何指定使用此插件的语法和规则。

帮助!

EDIT1:这里是表单标签的HTML输出:

<form accept-charset="UTF-8" action="https://stackoverflow.com/users/login" class="user_new" id="user_new" method="post"> 

至于有关调试的问题,当我把它给像这样:

$('#user_new').validate({ 
    debug: true, 
    rules: { 
     user_username: "required", 
     user_email: { 
      required: true, 
      email: true 
     } 
    }, 
    messages: { 
     user_username: "Please specify your name", 
     user_email: { 
      required: "We need your email address to contact you", 
      email: "Your email address must be in the format of [email protected]" 
     } 
    } 
}); 

我什么也看不到我的JS安慰。

编辑2:当我清除我的数据登录字段并按提交时,它不会提交。不知道这是否与实际工作的validate()函数有关。但是我看不到任何消息弹出或类似的东西。

EDIT3:看来这个问题可能是之间的ID &姓名字段被命名不同的脱节。但是,Rails将名称和ID分配给两个字段 - 所以不知道如何解决这个问题。

Edit4:我找到了解决办法。我将它添加到所选答案下的评论中。

+0

@littlechad放什么validate方法里面? – marcamillion 2011-01-05 09:07:03

+0

评论编辑:尝试添加一个容器后,你的输入标签,我的意思是添加这里面的验证方法:errorPlacement:function(error,element){error.appendTo(element.next());} – littlechad 2011-01-05 09:21:28

+0

btw我在哪里把那个'errorPlacement'代码?应该在消息之后的第二个'}之后?或者我应该完全清除规则然后添加它? – marcamillion 2011-01-05 21:12:39

回答

5

我认为它是因为“名”属性的表单值(输入标签)不匹配JQuery验证选项

$('#user_new').validate({ 
    debug: true, 
    rules: { 
     user_username: "required", // should be: "user[username]" 
     user_email: { // should be: "user[email]" 
      required: true, 
      email: true 
     } 
    }, 
    messages: { 
     user_username: "Please specify your name", // should be: "user[username]" 
     user_email: { // should be: "user[email]" 
      required: "We need your email address to contact you", 
      email: "Your email address must be in the format of [email protected]" 
     } 
    } 
}); 

编辑:看看这个问题,我想他有同样的问题,你是jquery.validate in cakePHP

EDIT2:编辑它显示,把容器您输入的标签之后,让我们说

<div id="username_error"></div>//for username error message 

添加该代码的方式:

$('#user_new').validate({ 
    debug: true, 
    rules: { 
     //rules 
    }, 
    messages: { 
     //messages 
    }, 
    errorPlacement: function(error, element) { 
     if (element.is(":radio")) 
      error.appendTo(element.parent().next());//if its a radio button 
     else if (element.is(":checkbox")) 
      error.appendTo (element.next());//if its a radio button 
     else 
      error.appendTo(element.parent().next()); 
    },//these lines of codes basically telling the jquery.validate plug-in to look for an element after 
}); 

,然后申请一些CSS整齐事情

<style> 
#username_error{ 
    //a little something something 
} 
</style> 

,或者您可以随时检查documentation进一步修改

+0

试过这个......但仍然没有运气。查看我的问题上的最后一个编辑,查看更新的代码:| – marcamillion 2011-01-05 08:55:40

+0

这样做的问题是,当我有用户[用户名]时,我在JS控制台中出现错误,提示'意外的令牌[' – marcamillion 2011-01-05 21:08:33

+2

Dude ...非常感谢你。这个问题的答案就是这样。所以对于那些感兴趣的人......正确的答案应该是围绕字段名称加引号。在我的情况下,请确保使用由Rails生成的值作为“名称”。所以正确的代码将如下所示:'rules {“user [username]”:“required”,“user [email]”:{required:true,email true}}'WOW ...我很高兴我发现了这个解。这一直在困扰着我。我不能够感谢你。如果你想编辑您的答案,包括这个修改,我认为未来失意的人会感谢你的:) – marcamillion 2011-01-07 08:12:54

0

不完全确定为什么上述不工作我自己。也许别人可以发现它......但同时看看文档中的调试选项。当你启用这个选项时你会得到什么?

1

试试这个:

$('#user_new').validate({ 
    rules: { 
     user_l_name: "required", 
     user_email: { 
      required: true, 
      email: true 
     } 
    }, 
    messages: { 
     user_l_name: "Please specify your name", 
     user_email: { 
      required: "We need your email address to contact you", 
      email: "Your email address must be in the format of [email protected]" 
     } 
    } 
}) 

请确保您在规则中使用和按摩的变量都相同,您输入ID和姓名。我想说的是,你的输入ID和名称必须相同才能工作。

我有同样的问题,如果这不起作用,让我知道,所以我可以进一步协助。

快乐编码!!!!

+0

因此,如果没有我的名字和id值是确切的,那么没有办法让它工作? Rails有一种处理表单的有趣方式...所以它会自动为我创建te id&name字段。我的rails表单字段代码如下所示:'<%= f.text_field:f_name,:value =>“First Name”,:class =>“clearField curved”%>
'它产生:'
'我有什么想法可以改变它? – marcamillion 2011-01-05 08:20:19