Backbone View无法退出单击事件验证

时间:2013-11-05 16:28:34

标签: validation backbone.js view

我使用两阶段浏览器验证,bootstrap-acknowledgeinput确保该字段不为空并且jqBootstrapValidate处理真正的验证和REGEX模式,并在棕色文本中添加一个表单字段下方给出错误。当用户点击时[REGISTER]按钮我检测到并将JSon数据发送到一些PHP进行服务器端验证。如果失败,则会在不同的

  • 标记中填充显示服务器端输入数据错误的文本。

    我正在检测错误标记,但我无法弄清楚如何退出click事件并且只是坐下 在不完整的表单上等待用户更正客户端验证。

    var RegisterView = Backbone.View.extend({
    
             el: $("#container"),
    
              events: {
                       'click .btn-primary'   : 'saveClient',    
                       'blur input#loginname'      : 'userCheck'
              },
    
         saveClient: function (e) {
    
              $('ul li').each(function(index){
                 if( $(this).text().length !== 0 ){
                     alert('client side error found');
                     return false;
                    }
                });
    
                var loginname  = $('#loginname').val(),
                  password  = $('#password').val(),
                  first     = $('#first').val(),
                  last      = $('#last').val(),
                  addr1     = $('#addr1').val(),
                  addr2     = $('#addr2').val(),
                  city      = $('#city').val(),
                  state     = $('#state').val(),
                  zip       = $('#zip').val(),
                  phone     = $('#phone').val(),
                  phone2    = $('#phone2').val(),
                  verified  = 'N';
    
                   registermodel = new RegisterModel({
                       loginname     :  loginname,
                  password  :  password,
                  first     :  first,
                  last      :  last,
                  addr1     :  addr1,
                  addr2     :  addr2,
                  city      :  city,
                  state     :  state,
                  zip       :  zip,
                  phone     :  phone,
                  phone2    :  phone2,
                           verified  :  verified
                     });
                   registermodel.save();
                   return false;
        }
    
  • 1 个答案:

    答案 0 :(得分:0)

    如果你想做的是:

      

    如果在客户端检测到错误,请不要保存registermodel

    如果检测到错误,只需退出saveClient函数(参见hasError boolean):

    saveClient: function (e) {
    
      var hasError = false;
    
      $('ul li').each(function(index){
        if( $(this).text().length !== 0 ){
         alert('client side error found');
         hasError = true;
         return false; // this 'return false;' exits the .each loop function NOT the saveClient function
        }
      });
    
      if (hasError)
          return false; // this one does exit the saveClient function
    
      // Code continues here..
      // ...
    }