Liferay 6.2 表单验证问题
Liferay 6.2 Form Validation Problems
我一直在尝试在 LR 6.2 GA6 Portlet 中调整来自 this example 的验证器。但是,我无法让它工作。奇怪的是,验证器标签也不能正常工作。
这是我一直在使用的表格
<aui:form name="<portlet:namespace />address" action="<%=doSmthURL %>" id="fm">
<aui:container>
...
<aui:row>
<aui:col>
<aui:input name="conditions1" label="text" type="checkbox" id="conditions1">
</aui:input>
</aui:col>
</aui:row>
<aui:row>
<aui:col>
<aui:input name="conditions2" label="conditions2" type="checkbox" id="conditions2"/>
</aui:col>
</aui:row>
</aui:container>
<aui:button-row>
<aui:button type="cancel" value="Back"></aui:button>
<aui:button type="submit" value="Finish"></aui:button>
</aui:button-row></aui:form>
这是Aui:Script部分
<aui:script>
var rules = {
conditions1:{
required:true
},
conditions2:{
required:true
}
}
var fieldStrings = {
conditions1:{
required:"Bitte nimm die allgemeinen Geschäftbedingungen an"
},
conditions2:{
required:"Bitte nimm die allgemeinen Geschäftbedingungen an"
}
}
AUI().use(
'aui-form-validator',
function(A) {
new A.FormValidator(
{
boundingBox: "#fm",
fieldStrings: fieldStrings,
rules: rules,
showAllMessages: true
}
)
}
);
我不确定为什么它不起作用。由于使用验证器标签也没有做任何事情,这可能是 javascript 执行作为一个整体的问题。
希望有人能帮助我。
亲切的问候,
JSM
抱歉,该文档令人困惑,需要更新。
如果可以,我建议使用 <aui:input>
中的 <aui:validator>
。
<aui:input name="conditions1" label="text" type="checkbox" id="conditions1">
<aui:validator name="required" errorMessage="Bitte nimm die allgemeinen Geschäftbedingungen an" />
</aui:input>
Portal 以这种方式处理所有必要的 JS。
如果您不能使用 <aui:validator
,我建议您使用 Liferay.Form
来访问附加到表单的表单验证器。因为目前,您正在附加一个,这可能会发生冲突。
<aui:script use="liferay-form">
var form = Liferay.Form.get('<portlet:namespace />fm');
var oldFieldRules = form.get('fieldRules');
var newFieldRules = [
{
body: function (val, fieldNode, ruleValue) {
return (val !== '2');
},
custom: true,
errorMessage: 'must-not-equal-2',
fieldName: 'fooInput',
validatorName: 'custom_fooInput'
},
{
fieldName: 'fooInput',
validatorName: 'number'
}
];
var fieldRules = oldFieldRules.concat(newFieldRules);
form.set('fieldRules', fieldRules);
</aui:script>
我一直在尝试在 LR 6.2 GA6 Portlet 中调整来自 this example 的验证器。但是,我无法让它工作。奇怪的是,验证器标签也不能正常工作。
这是我一直在使用的表格
<aui:form name="<portlet:namespace />address" action="<%=doSmthURL %>" id="fm">
<aui:container>
...
<aui:row>
<aui:col>
<aui:input name="conditions1" label="text" type="checkbox" id="conditions1">
</aui:input>
</aui:col>
</aui:row>
<aui:row>
<aui:col>
<aui:input name="conditions2" label="conditions2" type="checkbox" id="conditions2"/>
</aui:col>
</aui:row>
</aui:container>
<aui:button-row>
<aui:button type="cancel" value="Back"></aui:button>
<aui:button type="submit" value="Finish"></aui:button>
</aui:button-row></aui:form>
这是Aui:Script部分
<aui:script>
var rules = {
conditions1:{
required:true
},
conditions2:{
required:true
}
}
var fieldStrings = {
conditions1:{
required:"Bitte nimm die allgemeinen Geschäftbedingungen an"
},
conditions2:{
required:"Bitte nimm die allgemeinen Geschäftbedingungen an"
}
}
AUI().use(
'aui-form-validator',
function(A) {
new A.FormValidator(
{
boundingBox: "#fm",
fieldStrings: fieldStrings,
rules: rules,
showAllMessages: true
}
)
}
);
我不确定为什么它不起作用。由于使用验证器标签也没有做任何事情,这可能是 javascript 执行作为一个整体的问题。
希望有人能帮助我。
亲切的问候, JSM
抱歉,该文档令人困惑,需要更新。
如果可以,我建议使用 <aui:input>
中的 <aui:validator>
。
<aui:input name="conditions1" label="text" type="checkbox" id="conditions1">
<aui:validator name="required" errorMessage="Bitte nimm die allgemeinen Geschäftbedingungen an" />
</aui:input>
Portal 以这种方式处理所有必要的 JS。
如果您不能使用 <aui:validator
,我建议您使用 Liferay.Form
来访问附加到表单的表单验证器。因为目前,您正在附加一个,这可能会发生冲突。
<aui:script use="liferay-form">
var form = Liferay.Form.get('<portlet:namespace />fm');
var oldFieldRules = form.get('fieldRules');
var newFieldRules = [
{
body: function (val, fieldNode, ruleValue) {
return (val !== '2');
},
custom: true,
errorMessage: 'must-not-equal-2',
fieldName: 'fooInput',
validatorName: 'custom_fooInput'
},
{
fieldName: 'fooInput',
validatorName: 'number'
}
];
var fieldRules = oldFieldRules.concat(newFieldRules);
form.set('fieldRules', fieldRules);
</aui:script>