Jquery移动验证错误位置&;挑选
我在jQuery移动项目的表单中添加了Basistance jQuery验证。它工作完美,除了文本输入中显示的错误,而不是它们下面的错误。我知道我可以使用errorPlacement在输入下面使用div来输出错误消息,但这似乎不适用于选择菜单 所以我有两个问题:Jquery移动验证错误位置&;挑选,jquery,jquery-mobile,jquery-validate,Jquery,Jquery Mobile,Jquery Validate,我在jQuery移动项目的表单中添加了Basistance jQuery验证。它工作完美,除了文本输入中显示的错误,而不是它们下面的错误。我知道我可以使用errorPlacement在输入下面使用div来输出错误消息,但这似乎不适用于选择菜单 所以我有两个问题: 我是否可以做一些不同的事情,使错误消息显示在输入下方而不使用errorPlacement 如果我必须使用errorPlacement,如何获取错误消息以显示选择菜单 这是我的密码: <script> $('#page
<script>
$('#page').bind('pageinit', function(event) {
$('#registrationForm').validate({
rules: {
firstname: {
required: true
},
lastname: {
required: true
},
email: {
required: true,
email: true,
remote: "duplicateCheck.php"
},
password: {
required: true,
minlength: 5
},
verify_password: {
required: true,
minlength: 5,
equalTo: "#password"
},
handicap: {
required: true,
maxlength: 2,
digits: true
},
stopper: {
required: true
}
},
messages: {
firstname: {
required: "Please enter your first name."
},
lastname: {
required: "Please enter your last name."
},
email: {
required: "Please enter your email.",
email: "Please enter a valid email.",
},
password: {
required: "Please enter a password.",
minlength: "You password must be at least 5 characters long."
},
verify_password: {
required: "Please enter a password.",
minlength: "You password must be at least 5 characters long.",
equalTo: "You passwords did not match."
},
handicap: {
required: "Please enter your handicap.",
maxlength: "Your max handicap can't be higher than 99.",
digits: "Please only enter numbers."
},
stopper: {
required: "Please enter the word above."
}
},
errorPlacement: function(error, element) {
error.appendTo( element.parent().next() );
}
});
});
</script>
默认情况下,将jQuery验证插件与jQuery Mobile一起使用时,错误消息显示在输入元素下方。正在删除自定义的
errorPlacement
回调函数
简单演示:
但是,jQuery Mobile将select
元素包装在div
元素中,因此当插件添加错误标签
时,它似乎放在select
元素中。要解决此问题,请按如下所示使用errorPlacement
回调。它检查元素是否为select
元素,然后在最外层的div
包装后插入错误标签。如果元素不是select
,则只使用默认位置
errorPlacement: function (error, element) {
if (element.is('select')) {
error.insertAfter(element.parents('div.ui-select'));
} else {
error.insertAfter(element); // default placement
}
}
演示使用选择:
顺便提一下,从Jquery Mobile 1.4.3开始,这仍然是一个问题,@Sparky建议的解决方法修复了它。在标记问题时请更加小心。jQuery验证和jQuery验证引擎是两个不同的东西。我很抱歉。谢谢你把它修好。
$(document).on('pageinit', function () {
$('#registrationForm').validate({
rules: {
firstname: {
required: true
},
lastname: {
required: true
}
},
messages: {
firstname: {
required: "Please enter your first name."
},
lastname: {
required: "Please enter your last name."
}
}
});
});
errorPlacement: function (error, element) {
if (element.is('select')) {
error.insertAfter(element.parents('div.ui-select'));
} else {
error.insertAfter(element); // default placement
}
}