如何通过liferay中的ajax在表单提交之前检查错误

时间:2016-08-29 06:47:29

标签: java liferay

我创建了一个带有age作为字段名称的表单,并检查它是否为数字。但表单已成功提交,显示ajax响应,之后显示错误。我不希望在名为' age'的表单字段中出现错误时提交表单。那么如何防止这种情况。我的代码如下: -

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="theme" %>
<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui" %>
<theme:defineObjects/>
<portlet:defineObjects />
<portlet:resourceURL var="resourceURL"/>
<script type="text/javascript">
function callServeResource(){
    AUI().use('aui-io-request', function(A){
        A.io.request('<%=resourceURL.toString()%>', {
               method: 'post',
               form: {
                   id: 'fm'
               },
               on: {
                   success: function() {
                    alert(this.get('responseData'));
                   }
              }
            });
    });
}

AUI().use(
        'aui-form-validator',
        function(A) {
            new A.FormValidator(
                {
                    boundingBox: '#fm',
                    rules: {
                        age:
                        {
                            number:true
                        }
                    }
                }
            )
        }
    ); 
</script>
<form name="fm" id="fm">
Full Name:<input type="text" name="fullName"/>
<br/>
Age:<input type="text" name="age"/>
<br/>
<input type="button" value="Submit Form Data" onclick="callServeResource()">
</form>

1 个答案:

答案 0 :(得分:1)

试试这个。在A.io.request之前执行此代码以触发表单验证。如果出现验证错误,请退出功能或执行您想要的操作。 此代码存在于核心portlet.js中。

    var form = A.one(formSelector)

    var liferayForm = Liferay.Form.get(form.attr('id'));

    if (liferayForm) {
        var validator = liferayForm.formValidator;

        if (A.instanceOf(validator, A.FormValidator)) {
            validator.validate();

            hasErrors = validator.hasErrors();

            if (hasErrors) {
                validator.focusInvalidField();

                return;
            }
        }
    }