[size=medium]
当用户在前台填写完一个文本表单域后, 程序将用户填写的值传回服务器进行合法性验证, 然后在浏览器上提示填写的值是否可用.这种业务需求非常常见, 比如用户注册时检查用户名是否已被占用。那么如何用ExtJs完成这个小功能呢?
假如有这样一个表单域,当用户填写完甚至填写时就要对填写的值进行唯一性验证。
相关代码如下:
{
fieldLabel: '用户名',
name: 'username',
xtype:'textfield',
validationOnBlur : true, //失去焦点时进行验证
validationOnChange : true, //发生改变时进行验证
validator:function(){//配置验证方法, 通过这个方法和服务器进行交互
var cmpUsername=formPanel.form.findField('username');//formPanel是放置这个组件的面板, 此处没有写出
var value=cmpUsername.getValue();
if(value.length!=0){//当值不为空时才进行唯一性验证
Ext.Ajax.request({
params:{'username':value},
method:"POST",
url:'check.do'
success:function(response,options){
if(response.responseText=='false'){//服务器端的返回值为'false'
cmpUsername.markInvalid("该用户名已经被占用!");//这个方法可以给表单组件加上红圈圈和悬浮提示
}
}
});
}
}
}
validator函数的返回值是这样定义的:合法时返回布尔值true,不合法时返回错误信息字符串. 所以有人会这样写validator函数:
function(){
var flag = false;
Ext.Ajax.request({
url: '...',
params:{'username':value},
method: 'POST',
success: function (response, options) {
if(response.responseText == "false"){
flag = "该用户名已经被占用";//不合法时
//alert('ajax');//测试用的alert2
}
else{
flag = true;//合法时
}
}
});
//alert('validator');//测试用的alert1
return flag;
}
从逻辑上来说,这样做没错, 但实际上并不能取得想要的效果, 原因是Ajax函数的异步性质.如果将代码中的两个alert去掉然后再执行程序, 会发现alert1会在alert2之前执行,也就是说request的success函数会在validator函数执行完之后才执行,那么它里面对flag的赋值代码当然也就无效了.
[/size]
分享到:
相关推荐
一旦表单验证通过,ExtJS会通过Ajax方式发送HTTP请求到后台Servlet。 Servlet接收到请求后,会进一步验证数据的完整性和安全性,如防止SQL注入等。如果验证无误,Servlet将这些数据保存到数据库,通常涉及到数据库...
**标题详解:** "extjs最全项目 js struts Ajax" 这个标题暗示了这是一个综合性的IT项目,主要涉及EXTJS框架、JavaScript(js)、Struts框架以及Ajax技术。EXTJS是一个用于构建用户界面的前端JavaScript库,它提供...
8. **国际化支持**:EXT表单验证也考虑到了多语言环境,可以轻松切换不同语言的错误提示。这通过设置全局的`Ext.MessageBox`或每个字段的`invalidText`属性实现。 9. **插件和扩展**:EXT社区提供了许多表单验证...
6. **表单处理**:ExtJS3.0的表单组件功能强大,支持多种输入类型,可以进行数据验证,提供表单的提交和重置操作,方便进行用户输入的处理。 7. **拖放功能**:通过DragDrop和DDGroup接口,开发者可以轻松实现组件...
在"Extjs页面验证(修订版)"这个项目中,我们将探讨ExtJS如何实现表单验证以及与服务器端的数据交互。 1. **ExtJS表单验证**: - 表单是任何应用程序中的关键组成部分,尤其是涉及到用户输入数据时。ExtJS提供了...
表单字段可以通过配置项定义,包括字段类型、验证规则、提示信息等。 2. **Ext Ajax模块** Ext.Ajax是ExtJs中的一个核心类,负责处理异步的Ajax请求。通过它,开发者可以轻松地向服务器发送GET、POST等HTTP请求,...
3. **表单验证与提交**:在`subjectForm`函数中,使用`myform.getForm().isValid()`检查表单是否有效,如果有效,则通过`form.submit()`方法提交表单数据,设置等待消息、超时时间、成功和失败回调。成功回调会根据...
**ExtJS AJAX购物车详解** 在Web开发中,ExtJS是一个强大的JavaScript库,它提供了丰富的用户界面组件和数据管理功能,常用于构建复杂的桌面级应用。而Ajax技术则是实现页面无刷新更新的关键,使得用户在与网页交互...
例如,`beforesubmit`事件可以在表单提交前进行数据验证或修改,而`success`和`failure`事件则处理服务器响应,通常用于显示成功或错误信息。 三、表单数据绑定 EXTJS表单可以与模型(Model)进行数据绑定,模型...
表单验证是FormPanel 的一个重要特性。开发者可以通过设置`fieldValidators`或`validationEvent`属性来实现。当用户尝试提交表单时,ExtJS会自动检查所有字段的值是否满足验证规则。例如,我们可以通过以下方式验证...
Extjs对分页、表单验证、表单组件的布局与初始化都提供了详细的指导,使得表单元素的开发更加高效。 表格组件GridPanel是Extjs中的亮点之一,它不仅可以展示大量数据,还支持复杂的列模型和行操作。此外,GridPanel...
- **实时反馈**:例如,在用户输入时即时验证,提供动态的错误提示。 ### 5. 应用场景 - **表单提交**:用户填写表单后,无需跳转页面,即可完成提交和验证。 - **分页加载**:实现网页的无限滚动,加载更多内容...
### ExtJS-Ajax 相关知识点详解 #### 一、ExtJS 概述 ##### 1.1 架构特点 - **定义**: ExtJS 是一个功能强大的客户端 JavaScript 库,用于构建现代化、响应迅速的 Web 应用。它不仅支持 AJAX 技术,还能实现丰富的...
ExtJS 2.0是一个基于JavaScript的开源AJAX框架,专为构建富互联网应用程序(RIA)而设计。它提供了一套完整的组件模型、数据绑定机制、丰富的用户界面控件和强大的API,使得开发者能够轻松创建功能强大且交互性强的...
- 错误处理:提供良好的错误提示和异常处理机制,提高用户体验。 了解并熟练掌握这些知识点,开发者就能利用ExtJS和Struts2创建出高效、易用的Web应用,实现数据库的CRUD操作。在实际项目中,还需要结合具体的业务...
5. **表单元素**:EXTJS 2.0提供了丰富的表单元素,如文本框、下拉框、复选框等,支持验证和联动效果,方便构建动态表单。 6. **图表组件**:EXTJS 2.0内置了各种图表类型,如柱状图、饼图、线图等,适用于数据可视...
6. **EXTJS Form与.NET表单验证**:EXTJS的表单组件可以与.NET的服务器端验证机制结合,实现前后端的表单验证一致性,确保数据的准确性和安全性。 7. **EXTJS Ajax与.NET WebMethods**:EXTJS的Ajax组件可以调用...
例如,使用注解`@Valid`进行表单验证,如果验证失败,Struts2会自动将错误信息返回到前端。 在实现过程中,我们需要在Struts2的配置文件(struts.xml)中定义对应的Action映射,确保表单提交请求能够正确地路由到...