`
thiner
  • 浏览: 29255 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ext的Field.isValid()函数

阅读更多
也许你也遇到过这种情况:先用markInvalid()函数把某个输入域标示为inValid状态,之后你调用这个输入域的isValid()函数,你期待它返回false,实际上确实true。
这是为什么呢?

官方的文档中对这个函数的描述是这样的:
引用
Returns whether or not the field value is currently valid by validating the processed value of the field. Note: disabled fields are ignored.

这个函数会调用已经定义的校验规则来验证输入框中的值,如果通过则返回true。而markInvalid()函数只是给输入框加上了invalid标志,并不影响校验结果,于是这种奇怪的现象就出现了。

当然,我们可以通过预设校验规则来做所有的验证,而不用markInvalid这个函数,这样可以避免发生这种情况。但是,如果你也像我一样,喜欢用markInvalid函数标示某个控件为invalid,并且期望之后调用isValid时返回false,那么,下面的这段代码就派上用场了。
Ext.override(Ext.form.Field, {
    isValid : function(preventMark){
        if(this.disabled){
            return true;
        }
        if(this.getEl().hasClass(this.invalidClass)){
            return false;
        }
        var restore = this.preventMark;
        this.preventMark = preventMark === true;
        var v = this.validateValue(this.processValue(this.getRawValue()));
        this.preventMark = restore;
        return v;
    }
})

分享到:
评论
3 楼 moment52 2012-09-10  
LZ我用的是extjs4,4中的processValue已变成processRawValue,this.getEl()在4中没有,所以我就将if(this.getEl().hasClass(this.invalidClass)){ 
            return false; 
        }  删了,问题存在,我把return v 改成false,问题依然没变,可以说一下原理,我应该怎么改你这段代码呢
2 楼 thiner 2011-12-08  
我写这篇博客的时候,用的是ExtJs2.1.你用的是哪个版本?
1 楼 w3792001602007 2011-12-08  
不顶用啊。。。。。。。。。。

相关推荐

    Ext登陆login

    if (form.getForm().isValid()) { form.getForm().submit({ url: 'login.php', method: 'POST', success: function(form, action) { // 登录成功处理 }, failure: function(form, action) { // 登录失败...

    EXT 表单验证EXT 表单验证

    当调用`form.isValid()`方法时,表单会检查所有字段是否满足验证条件。如果所有字段都有效,返回`true`;否则,返回`false`。 6. **远程验证**:对于需要服务器端验证的复杂场景,EXT表单支持异步验证。通过配置`...

    extJs中关于formPanel动态添加组件的验证问题

    3. **更新验证状态**:如果在表单已经初始化并显示的情况下添加字段,可能需要手动触发FormPanel的验证,可以使用`formPanel.getForm().isValid()`来检查整个表单是否有效。 4. **错误处理**:当验证失败时,EXT JS...

    用ext来登录的程序代码

    - `simple.form.isValid()`: 验证表单的有效性。 - `Ext.MessageBox.show()`: 显示加载提示框。 - `setTimeout` 和 `Ext.MessageBox.updateProgress()`: 更新进度提示。 - `doAction('submit')`: 提交表单数据到...

    ExtJs4.0 表单提交Demo

    - 验证数据完整性,避免无效数据提交,可以使用`form.isValid()`检查表单是否有效。 7. **实际应用** 这样的表单提交示例在实际项目中非常常见,比如用户注册、登录、信息编辑等场景。通过合理的架构设计,可以...

    Ext制作的登陆Demo

    form.isValid()) { event.preventDefault(); // 阻止表单提交,因为有无效字段 } else { // 这里可以添加服务器端验证逻辑,例如使用Ajax发送登录请求 var values = form.getValues(); Ext.Ajax.request({ url...

    Ext 入门 登陆验证表单提交

    if (form.isValid()) { // 验证表单是否有效 // 发送请求到服务器进行验证 Ext.Ajax.request({ url: 'check.jsp', method: 'POST', params: values, success: function(response) { // 处理服务器返回的结果...

    Extjs upload(ext官网例子)

    if (form.isValid()) { form.submit({ url: 'your/upload/url', method: 'POST', success: function(form, action) { // 处理成功响应 }, failure: function(form, action) { // 处理失败响应 } }); } ```...

    Ext实现验证码的关键代码

    if (form.isValid()) { form.submit({ url: 'validate_captcha.php', // 提交到验证验证码的服务器端接口 success: function(form, action) { if (action.result.success) { // 验证成功,执行相应操作 } ...

    ExtJs4登录示例

    使用`form.loadRecord`和`form.isValid`方法进行数据加载和验证。如果所有字段都有效,可以使用`form.submit`来发送登录请求到服务器。 6. **服务器通信**:登录信息通常会通过Ajax请求发送到服务器,这可以通过...

    Extjs验证表单 Extjs验证表单

    Ext.form.Field.prototype.msgTarget = "qtip"; ``` 这里,“qtip”表示使用气泡提示的方式展示错误信息。此外还可以选择其他几种方式,例如“title”、“under”或“side”,甚至可以指定一个元素ID来作为提示目标...

    Ext上传文件例子(入门)

    if (form.isValid()) { form.submit({ url: 'upload.php', // 服务器端处理文件上传的URL success: function(form, action) { alert('文件上传成功'); }, failure: function(form, action) { alert('文件...

    SSH2上传实现

    if (form1.getForm().isValid()) { form1.getForm().submit({ waitMsg: '正在上传...', url: "Upload.action", method: "POST", success: function(form, action) { Ext.Msg.alert('成功', action.result....

    Extjs中文教程2.x

    - **示例**: `formPanel.getForm().isValid()`。 #### 十五、更多表单组件 **15.1 表单组件** - **类型**: 包括文本框、复选框、单选按钮等多种类型。 - **示例**: `new Ext.form.TextField({ fieldLabel: 'Name'...

    Extjs页面验证

    在ExtJS中,我们可以通过监听`validitychange`事件来实现实时验证,并使用`form.isValid()`方法来检查表单整体是否有效。如果表单中的某个字段无效,该字段的`invalid`样式会自动应用,显示错误提示。 此外,`Ext....

    extjs属性方法大全

    - `isValid(Boolean preventMark)`: 验证字段有效性。 - `markInvalid([String msg])`: 设置无效标记。 - `validate()`: 手动验证字段。 - `reset()`: 重置字段。 #### 五、`Ext.form.Label` 类 `Ext.form....

    ext实现完整的登录代码

    使用 `form.isValid()` 来检查表单中的所有字段是否都有效。如果所有字段都通过验证,表单才可提交。`allowBlank` 和 `blankText` 属性确保了帐户和密码字段不为空。 4. **按钮(Button)**: - `text`:定义按钮...

    learning extjs 中文版 表单提交

    EXTJS提供了丰富的Form API,如`load()`, `submit()`, `reset()`, `isValid()`等,便于开发者对表单进行操作。例如,`submit()`方法用于提交表单,可以配置各种参数,如`method`(提交方式),`params`(附加参数),`...

    extjs-form组件配置参数详解

    - **isValid()**: 执行客户端验证并返回验证结果。 - **load(Object options)**: 执行表单数据加载操作。 - **loadRecord(Record record)**: 从数据记录中加载数据到表单。 - **markInvalid(Array/Object errors)**:...

Global site tag (gtag.js) - Google Analytics