我正在尝试为注册表单上的生日字段制作一个简单的自定义 aui:validator ,但它根本不起作用。有什么想法吗?
<aui:input name="birthday" value="<%=birthday%>">
<aui:validator name="custom" errorMessage="some-error">
function (val, fieldNode, ruleValue) {
return false;
}
</aui:validator>
</aui:input>
我想要达到的目的是检查用户是否在注册时年满18岁。
任何提示都将不胜感激!
答案 0 :(得分:1)
我在此确认所选日期大于今天的日期。您可以根据需要进行更改。
<script>
AUI().ready('aui-form-validator', 'aui-overlay-context-panel', function(A) {
A.mix(
YUI.AUI.defaults.FormValidator.RULES,
{
dateCustomRule: function(val, fieldNode, ruleValue) {
var val = new Date(Date.parse(val,"MMM dd yyyy"));
var today=new Date();
return (val>today);
}
},
true
);
var validator2 = new A.FormValidator({
boundingBox: document.<portlet:namespace/>form,
fieldContainer: 'p',
rules: {
<portlet:namespace />dueDate:{
required: true,
dateCustomRule:true
}
},
fieldStrings: {
<portlet:namespace />dueDate: {
required: 'Due Date Required',
dateCustomRule: 'Date must be greater than Today\'s Date'
}
},
on: {
validateField: function(event) {
},
validField: function(event) {
},
errorField: function(event) {
},
submitError: function(event) {
var formEvent = event.validator.formEvent;
var errors = event.validator.errors;
},
submit: function(event) {
var formEvent = event.validator.formEvent;
return false;
}
}
});
});
</script>
答案 1 :(得分:0)
不幸的是我也无法使用Lucky Boy的解决方案。出于某种神秘的原因,它在create_account.jsp
文件中无效。
作为一种解决方法,我在文件的标题中创建了一个新的异常:
<liferay-ui:error exception="<%=NotOldEnoughException.class%>"
message="Not old enough" />
并使用EditUserAction
文件的钩子版本进行检查。
答案 2 :(得分:0)
制作验证器的正确方法是这样的。
希望它对您有帮助
<aui:validator name="custom" errorMessage="Tienes que ser mayor de 18 años">
function (val, fieldNode, ruleValue) {
var val = new Date(Date.parse(val,"MMM dd yyyy"));
var adult=new Date();
adult.setFullYear(adult.getFullYear() - 18)
return (val<adult);
}
</aui:validator>