如何在aui脚本的提交事件中停止提交表单

how to halt form submission in on submit event of aui script

这是我的 ai 脚本。转到成功部分后,状态变量设置为 0。但在此之后的情况 if(status == 0) 未在块 if(starttime.length > 0 || endtime.length > 0) 内执行。

  A.one('#<portlet:namespace/>addBooking').on('submit', function(event) {
    var roomIndex =A.one("#<portlet:namespace/>roomIndex").get('value');
    var bookingdate =A.one("#<portlet:namespace/>bookingdate").get('value');
    var starttime =A.one("#<portlet:names`enter code here`pace/>starttime").get('value');
    var endtime =A.one("#<portlet:namespace/>endtime").get('value');
    var status=1;
    if(starttime.length > 0 || endtime.length > 0) {
        A.io.request('${bookingValidationURL}',{
             dataType: 'json',
             method: 'POST',
             data: { <portlet:namespace/>roomIndex: roomIndex,
                 <portlet:namespace/>starttime: starttime,
                 <portlet:namespace/>endtime: endtime,
                      },
             on: {

             success: function() {

                  var data = this.get('responseData');

                  if(data==null){
                      status="0";
                  }

                }

             }

        });



 if(status==0){   // this condition is not checked when status is 0 in success part   
      event.halt();
    }   
}

});

Ajax 是异步的..所以为了完成同步任务,我们必须在 ajax 函数中设置 sync=true...所以对于上面的代码

  A.io.request('${bookingValidationURL}',{
         dataType: 'json',
         method: 'POST',
         sync : true, // this is the change
         data: { <portlet:namespace/>roomIndex: roomIndex,
             <portlet:namespace/>starttime: starttime,
             <portlet:namespace/>endtime: endtime,
                  },
         on: {

         success: function() {

              var data = this.get('responseData');

              if(data==null){
                  status="0";
              }

            }

         }

    });