Extjs表单输入框异步校验的插件实现

一、效果如图所示

特点:

1、异步后台校验不会对用户操作产生阻塞感;

2、可在用户停止输入后自动校验,避免频繁进行无谓的后台校验;

3、以插件方式实现,方便使用;

二、插件源码如下:

/**

* Created by jiawenjun on 2016/10/19.

*/

Ext.define(‘Ux.plugins.FieldAjaxVerify‘,{    extend: ‘Ext.AbstractPlugin‘,    alias: ‘plugin.fieldajaxverify‘,    buffer:500,    url:‘‘,    timeout:1000,    connectionFailure:‘服务器连接失败‘,    init:function(field){        var me=this;        var params=me.params;        field.enableKeyEvents=true;        field.on(‘keyup‘,Ext.Function.createBuffered(function(field,e){            var value=field.getValue();            if(Ext.isEmpty(value)){                return;            }            var params=field.up(‘form‘).getValues();            if(Ext.isFunction(me.getParams)){                params=me.getParams(field,value);            }            Ext.Ajax.request({                url:me.url,                method:"POST",                params:params,                timeout: me.timeout,                contentType: "application/json; charset=utf-8",                success:function(response){                    var obj = Ext.JSON.decode(response.responseText);                    if(obj.result["success"]===true){                        field.setValidation(true);                        field.validate();                    }else{                        field.setValidation(obj.result["message"]);                        field.validate();                    }                },                failure:function(response){                    var result = Ext.JSON.decode(response.responseText);                    field.setValidation(me.connectionFailure);                    field.validate();                }            });        },me.buffer))    }});

三、应用方式

{name:‘equipmentLedgerCategoryName‘,fieldLabel:‘分类名称‘ ,allowBlank:false ,afterLabelTextTpl :‘

<span style="color:red;font-weight:bold" data-qtip="必填项">*</span>‘

,plugins:{ptype: ‘fieldajaxverify‘,url:‘/service/uniquenessCheckName‘}}

可用配置项:

1、buffer 毫秒数(在多少毫秒内用户没有输入操作则自动向后台发送验证请求

2、timeout ajax请求超时限制(毫秒数)

3、getParams(field,value) 自定义ajax参数内容

四、后台服务提供的数据格式

{

"resultCode" : 0,

"result" : {

"message" : "分类名称重复",

"success" : false

},

"msgId" : "41c2c52c-66d4-49c5-be52-0158e71cfe2c",

"success" : true

}

备注:在Extjs5.1下测试通过,有其他个性化需求可参考此插件进行实现,谢谢。

时间: 2024-10-12 14:38:04

Extjs表单输入框异步校验的插件实现的相关文章

elementui表单输入框部分校验--判断

<template> <div> <div class="binding_main_nav"> <div class="binding_main_nav_div"> <div class="binding_main_nav_div_selection"></div> <span>绑定邮箱</span> </div> <div clas

Extjs表单控件入门

ExtJs表单控件用formPanel来做为表单元素的容器.默认情况下,是使用Ajax异步提交. 大家知道要使用Extjs必须引入他的库,所以我们要引入以下几个文件: ext-all.css ext-base.js ext-all.js PS:笔者采用的是extjs3.0版本 那怎么加载插件呢?放心,extjs有自己加载的方法: Ext.onReady(function(){ //coding... } 实例代码: var formPanel=new Ext.form.FormPanel({ t

表单验证的validate.js插件---jQuery Validation Plugin

早上在公交车上看了一个关于慕课网的教程<表单验证的validate.js插件---jQuery Validation Plugin>,正好可以用到自己近期开发简易微博的注册页面和登录页面,插件全名叫jquery.validate.js,在引入jquery.validate.js之前要先将jquery.js引入.这个插件主要用于表单的验证,用户在注册和登录时体验十分不错!由于自己只了解关于validate的皮毛,只会简单的应用rule规则和message自定义提示,事实上,validate还有其

html表单输入框css样式美化特效源代码下载

html表单输入框css样式美化源代码,响应鼠标动作 原文:html表单输入框css样式美化特效源代码下载 源代码下载地址:http://www.zuidaima.com/share/1550463335926784.htm 源代码截图:

js监听input等表单输入框的变化事件oninput

js监听input等表单输入框的变化事件oninput,手机页面开发中使用到文本框textarea输入字符监听文本框变化计算还可以输入多少字符,如果使用onkeyup的话是无法监听到输入法输入的文本变化的,复制粘贴也不能监听到,于是就用到了oninput事件来监听文本框value值的改变.由于是手机端页面没有考虑IE 这货.过去一般都使用onchange/onkeyup/onkeypress/onkeydown实现,但是这存在着一些不好的用户体验.比如onchange事件只在键盘或者鼠标操作改变

CSS图标文字对齐和表单输入框文字对齐兼容

张鑫旭的一篇文章,讲到20像素图标对齐和表单元素40像素对齐有所收获,谢谢@张鑫旭 ,很多观点跟平时的处理方式不谋而合,一般来说,我处理图标如果临近的话都会使用同样宽高,然后使用inline-block比较多,表单输入框和按钮以line-height:21-22为准.然后超出的用padding来补充. 以下摘录部分原文中的实践代码. 1.图标和文字对齐 一般的图标和文字对齐html代码: <p><i class="icon"></i>前端开发博客&l

ExtJS 表单 submit时错误处理

这里不提success,提提Extjs 表单提交的failure方法. 在表单的提交中,当发生异常行为时通常分为三种情况 1. 无法连接到服务器 2. 表单验证错误 3. 业务逻辑错误 对应下面的代码 [javascript] view plaincopy failure = function(form, action){ switch (action.failureType) { case Ext.form.Action.CLIENT_INVALID: Ext.ux.Toast.msg("错误

jQuery表单输入文字统计字数插件

这是一款非常实用的jQuery表单输入文字计数插件.该插件可以设置某个输入框或textarea可输入的最大文字数,当用户输入文字的时候,插件会将字数倒计数显示,提示用户还可以输入多少个文字,并且显示的数字随着数字的减少会越来越清晰. 效果演示:http://www.htmleaf.com/Demo/201503281587.html 下载地址:http://www.htmleaf.com/jQuery/Form/201503281586.html

EXTJS 表单提交

EXTJS框架中,在提交表单时,可有3种方式: 方法一: 普通的 Form 提交方式, 主要使用 form.submit() 方法来将表单提交到后台,在后台是根据表单的 name 属性来获取表单中元素的值 ,代码如下: 1 Ext.onReady(function () { 2 var formPanel = new Ext.create({ 3 xtype: 'form', 4 id: 'multiColumnForm', 5 collapsible: false, 6 frame: true