Liferay <aui:validator>的日期?</aui:validator>

时间:2013-05-30 12:50:30

标签: liferay liferay-6 liferay-aui

我正在尝试为注册表单上的生日字段制作一个简单的自定义 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岁。

任何提示都将不胜感激!

3 个答案:

答案 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>