javascript - ExtJs 表单验证

标签 javascript validation extjs

我在 ExtJs 中有这个表单。如果 field1 不为空,则 field2 不得为空。但即使听众正在开火,它也不起作用。

 {
    xtype: 'panel',
    title: 'title 1',
    items: [{
        xtype: 'fieldset',
        title: 'field A',
        items: [{
            xtype: 'textfield',
            fieldLabel: 'Line 1',
            id: 'field1',
            listeners: {
                change: function(f, new_val) {
                    if (new_val) {
                        //alert("change" + new_val);
                        f.field2.allowBlank = false;
                    } else {
                        f.field1.allowBlank = true;
                    }
                }
            }
            code for field2
        }]
    }]
}

最佳答案

部分答案:

您的代码不起作用的原因是 allowBlank 是一个配置值 -- 它仅在创建组件时有效。我经常看到这个错误——在浏览 API 文档时,你需要记住所有这些配置选项只在对象创建时有效——它们不是你可以设置来修改现有对象行为的公共(public)属性.

也就是说,令我惊讶的是 API 中没有 setAllowBlank() 方法。如果我能找到解决方法,我会继续环顾四周并修改此答案。

编辑:根据我对 TextField 源代码的阅读,您的方法应该有效。所以问题是为什么不是。

EDIT2:您可能无法获得对您的 TextFields 的引用。 f.field1 可能没有指向您认为的那样。您可以通过将 ref:'field1' 添加到您的 TextField 配置来解决此问题。然后您的 FormPanel 将有一个名为 field1 的属性,您可以引用。

关于javascript - ExtJs 表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4379732/

相关文章:

javascript - Codemirror,如何添加插件

javascript - Meteor 在 HTML 中显示 base64 图像

asp.net - 如何在 ASP.Net 中设置 Page.IsValid

extjs - 如何为 ext5 中的每个 ajax 请求设置公共(public)请求 header ?

javascript - 尝试 extjs 5 简单网格面板(示例不起作用)

javascript - 在 ExtJS 中重写 getState

javascript - 中继器中的重复项,跟踪没有帮助

javascript - 在将操作传递给 reducer 之前,如何确保所有调用都已返回并推送到数组中?

php - laravel 在验证 FormRequest 后返回错误而不是重定向的 json

java - 验证用户输入的日期