jQuery验证基于远程响应

时间:2015-07-22 12:29:03

标签: jquery validation jquery-validate

remote: {
  url: "/pages/",
  complete: function (status) {
      return !status;
  }
}

我已经应用了jquery Validation和remote参数,该调用根据发送的数据返回true和false,但我需要验证,如果返回true则应该被视为false,反之亦然。我尝试在完整的回调中返回相反的响应,但是我认为验证不起作用。

3 个答案:

答案 0 :(得分:0)

不确定但可能是从远程返回的状态在此处不会被视为bool。所以试试吧。

remote: {
  url: "/pages/",
  complete: function (status) {
       if(status=="true")
          return false;
       return true; //no need of else
  }
}

答案 1 :(得分:0)

文档说:

  

响应被评估为JSON,对于有效元素必须为true,并且对于无效元素,可以是任何false,undefined或null,使用默认消息;或者一个字符串,例如。 "该名称已被采用,请尝试使用peter123"显示为错误消息。

因此,请确保使用有效的JSON回复true或false。

然后简单地发表一个声明,如

if(status)  

if(status == true)

但我建议不要改变那方面的任何事情。如你所知,如果它是假的,我会通过远程页面返回true。如果它实际上是假的,你不应该返回true。所以只需更改你回拨的类型。

答案 2 :(得分:0)

    remote: {
      url: "/pages/",
      success: function( response ) {
        var element = $(this).find(`your element`)[0];
        var previous = validator.previousValue( element );
        var valid = response === "ok" || response === "true", //add your valid condition here
                    errors, message, submitted;

        validator.settings.messages[ element.name ].remote = previous.originalMessage;
        if ( valid ) {
            submitted = validator.formSubmitted;
            validator.prepareElement( element );
            validator.formSubmitted = submitted;
            validator.successList.push( element );
            delete validator.invalid[ element.name ];
            validator.showErrors();
        } else {
            errors = {};
            message = response || validator.defaultMessage( element, "remote" );
            errors[ element.name ] = previous.message = $.isFunction( message ) ? message( value ) : message;
            validator.invalid[ element.name ] = true;
            validator.showErrors( errors );
        }
        previous.valid = valid;
        validator.stopRequest( element, valid );
      }
   }