基于远程响应的 jQuery Validate

Posted

技术标签:

【中文标题】基于远程响应的 jQuery Validate【英文标题】:jQuery Validate On Remote response based 【发布时间】:2015-10-12 07:58:02 【问题描述】:
remote: 
  url: "/pages/",
  complete: function (status) 
      return !status;
  

我已经应用了 jquery 验证和远程参数,调用根据发送的数据返回 true 和 false,但我需要验证就像如果返回 true,那么它应该被认为是 false,反之亦然。我尝试在完整的回调中返回相反的响应,但我猜验证不是这样工作的。

【问题讨论】:

【参考方案1】:

不确定,但可能是从远程返回的状态在这里不会被视为bool。所以就试试这个吧。

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

【讨论】:

嗯,我试过了,但它没有帮助,我什至试着把 return false;直接在回调中,但验证不考虑响应 只需console.log(status),看看你得到了什么!如果是jqXHR 类型,则需要将其获取为status.responseText 我得到真/假取决于输入的数据【参考方案2】:

文档说:

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

因此,请确保您使用有效的 JSON true 或 false 进行响应。

然后简单地做一个类似的声明

if(status)  

if(status == true)

但我建议不要在这方面进行任何更改。如您所建议的,如果远程页面为假,我将通过远程页面返回真。如果它实际上是假的,你不应该返回真。所以只需改变你回调的类型。

【讨论】:

【参考方案3】:
    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 );
      
   

【讨论】:

以上是关于基于远程响应的 jQuery Validate的主要内容,如果未能解决你的问题,请参考以下文章

Select2是一个基于jQuery的选择框替代品。它支持搜索、远程数据集和无限滚动结果。

基于 AJAX 响应代码从 jquery modal 转到下一个字段集

JSON 中基于 WCF REST 的响应的 JQUERY AJAX

jQuery AJAX 轮询 JSON 响应,基于 AJAX 结果或 JSON 内容进行处理

Django 在 JQuery AJAX 请求中说 is_ajax 是错误的

jQuery远程验证电子邮件验证服务