mar*_*ion 1 jquery jquery-validate
我正在尝试使用此插件:http://docs.jquery.com/Plugins/Validation
其中#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 name@domain.com"
}
}
})
Run Code Online (Sandbox Code Playgroud)
这些是我的输入字段在呈现页面时的外观(由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 />
Run Code Online (Sandbox Code Playgroud)
我只是想先验证用户名和电子邮件.然后从那里拿走它.
对于我的生活,我无法弄清楚如何指定使用此插件的语法和规则.
救命!
Edit1:这是表单标记的HTML输出:
<form accept-charset="UTF-8" action="/users/login" class="user_new" id="user_new" method="post">
Run Code Online (Sandbox Code Playgroud)
关于调试的问题,当我包括它时:
$('#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 name@domain.com"
}
}
});
Run Code Online (Sandbox Code Playgroud)
我在JS控制台中看不到任何内容.
编辑2:当我清除我的登录数据字段并按提交时,它将不会提交.不确定这是否与validate()函数实际工作有关.但我看不到弹出的消息或类似的东西.
编辑3:似乎问题可能是ID和名称字段之间的连接不同.但是,Rails会为两个字段分配名称和ID - 因此不确定如何解决此问题.
Edit4:我找到了解决方案.我根据所选答案将其添加到评论中.
我认为它是因为表单中的"name"属性的值(输入标记)与jquery validate选项不匹配
$('#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 name@domain.com"
}
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:看一下这个问题,我认为他和cakePHP中的jquery.validate有同样的问题
Edit2:编辑它显示的方式,在输入标签后面放一个容器,比方说
<div id="username_error"></div>//for username error message
Run Code Online (Sandbox Code Playgroud)
添加此代码:
$('#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
});
Run Code Online (Sandbox Code Playgroud)
然后应用一些CSS来整理一些东西
<style>
#username_error{
//a little something something
}
</style>
Run Code Online (Sandbox Code Playgroud)
或者您可以随时查看文档以进行进一步修改
| 归档时间: |
|
| 查看次数: |
5464 次 |
| 最近记录: |