<form name = "regin" id = "regin">
<div id = "form_hold">
<div><label>Username</label><input type="text" id = "Rusername" name = "Rusername" /><div class = 'verdiv' id = 'rvuname'></div></div>
<div><label>Email</label><input type="text" id = "Remail" name = "Remail" /><div class = 'verdiv' id = 'rvemail'></div></div>
<div><label>Password</label><input type="password" id = "Rpassword" name = "Rpassword" /><div class = 'verdiv' id = 'rvpass1'></div></div>
<div><label>Confirm</label><input type="password" id = "Rpassword2" name = "Rpassword2" /><div class = 'verdiv' id = 'rvpass2'></div></div>
</div>
<button type="button" class = "thoughtbot" id = "registerButton">Register</button>
</form>
和javascript / jquery ......
if($username == ''){
$('#Rusername').parent().find('.verdiv').addClass('error');
$('#Rusername').parent().effect("shake", { times:3 }, 50);
}
if($email == ''){
$('#Remail').parent().find('.verdiv').addClass('error');
$('#Remail').parent().effect("shake", { times:3 }, 50);
}
if($password == ''){
$('#Rpassword').parent().find('.verdiv').addClass('error');
$('#Rpassword').parent().effect("shake", { times:3 }, 50);
}
if($checkval == ''){
$('#Rpassword2').parent().find('.verdiv').addClass('error');
$('#Rpassword2').parent().effect("shake", { times:3 }, 50);
}
现在是否有一个顶级函数来“测试”这些陈述中的每一个,看它们是否属实?感谢。
答案 0 :(得分:9)
你可以循环:
$('#Rusername, #Remail, #Rpassword, #Rpassword2').each(function() {
if ($(this).val() == '') {
$(this).parent().effect('shake', {times: 3}, 50).find('.verdiv').addClass('error');
}
});
但理想情况下,我会在其父元素中添加一个类,并将选择器简化为:
$('.parent_class input');
编辑:代码不完整 - 我删除了一个左大括号。
答案 1 :(得分:1)
怎么样:
$("form input:text").each(function() {
if ($(this).val() == "") {
$(this).parents().find('.verdiv').addClass('error');
$(this).parent().effect("shake", { times:3 }, 50);
}
});
- 编辑 -
要回答您的其他问题,您可以向字段添加属性,例如data-type =“email”等,然后修改javascript:
$("form input:text").each(function() {
var isValid = new Function("value", "validate" + $(this).attr("data-type") + "(value);");
if ($(this).val() == "" && !isValid($(this).val())) {
$(this).parents().find('.verdiv').addClass('error');
$(this).parent().effect("shake", { times:3 }, 50);
}
});
您需要为“validateemail”,“validatetext”等添加函数,这些函数对于有效字段返回true,对于无效字段返回false。
答案 2 :(得分:0)
您可以为每个输入添加data-validate=true
属性,然后执行以下操作:
function validate() {
var valid = true;
$("[data-validate]").each(function () {
var el = $(this);
if(el.val() == "") {
el.parent().find('.verdiv').addClass('error');
el.parent().effect("shake", { times:3 }, 50);
valid = false;
}
});
return valid
}
答案 3 :(得分:0)
在要验证的每个输入字段上放置相同的类,例如validatefield
。
然后假设$username
和$email
是每个输入字段的值,这应该有效:
var valid = true;
$(".validatefield").each(function() {
if ($(this).val() == "") {
$(this).parent().find('.verdiv').addClass('error');
$(this).parent().effect("shake", { times:3 }, 50);
valid = false;
}
});
答案 4 :(得分:0)
$('input [type=text]').each(function(event){
if($(this).val()=='')
{
//Do here shaking and error showing.
}
});
答案 5 :(得分:0)
有点复杂和肮脏,但可能有效。
var items = { 'username':'Rusername', 'email':'Remail', 'password':'Rpassword', 'checkval':'Rpassword2' };
$.each( items, function( val, id ) {
eval('if($'+val+' == \'\') { ....copy your codes here... }');
});