gpt4 book ai didi

javascript - ExtJs - 动态更改文本字段 VType

转载 作者:行者123 更新时间:2023-11-28 19:56:08 25 4
gpt4 key购买 nike

一个相当简单的问题。在任何地方都找不到答案。

使用 ExtJs 4.2

我有两个自定义 VType 和一个文本字段。我想在用户单击单选按钮时更改该文本字段的 vtype。

我知道文本字段已经创建,这样做:

textfield.vtype = 'otherType';

不会为我做这件事。两者都不会:

Ext.apply(textField,{vtype:'otherType'});  

所以显而易见的东西已经消失了。现在我正在考虑销毁并重新创建它,但是(如果它有效的话)这似乎有点矫枉过正。

最佳答案

其他答案没有考虑到 maskRe 也需要更改。为什么?如果您只是应用新的 vtype,验证将根据新的 vtype 进行,但允许您输入的字符不会随新的 vtype 一起更改。

这是完整的解决方案。

textfield.vtype = 'otherType';
textfield.validate();
textfield.maskRe = Ext.form.field.VTypes[textfield.vtype + 'Mask'];

如果您想知道原因,请查看源代码,了解 maskRe 最初是如何设置的:http://docs.sencha.com/extjs/4.2.1/source/Text2.html#Ext-form-field-Text-method-initEvents

这里有一个重写,允许您在任何文本字段上调用 ​​setVType。

Ext.define('Ext.overrides.form.field.Text', {
override: 'Ext.form.field.Text',

/**
* Changes the vtype, adjusts the maskRe
* and revalidates unless withValidate is false.
*/
setVType: function(newVtype, withValidate) {
var me = this;

me.vtype = newVtype;
if (withValidate !== false) {
me.validate();
}
me.maskRe = Ext.form.field.VTypes[me.vtype + 'Mask'];
}
});

关于javascript - ExtJs - 动态更改文本字段 VType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22519233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com