Javascript 如何在一定条件下实现标记字段的自动对焦
我有一个标记字段,我在其中加载一些值并发送到服务器。我想要的是,当再次重新加载该标记域组件时,这些值应该被自动选择。 目前,它们不是自动选择的,但如果我将焦点放在标记字段上,则这些值将显示为已选择 在某些情况下,自动聚焦的方式是什么。不总是这样 现在我只是显示数据,但这不是正确的方法,在IE中,这是不起作用的 下面是我目前正在做的事情Javascript 如何在一定条件下实现标记字段的自动对焦,javascript,extjs,extjs6,Javascript,Extjs,Extjs6,我有一个标记字段,我在其中加载一些值并发送到服务器。我想要的是,当再次重新加载该标记域组件时,这些值应该被自动选择。 目前,它们不是自动选择的,但如果我将焦点放在标记字段上,则这些值将显示为已选择 在某些情况下,自动聚焦的方式是什么。不总是这样 现在我只是显示数据,但这不是正确的方法,在IE中,这是不起作用的 下面是我目前正在做的事情 if(myField.xtype == "tagfield"){ myField.xtype.setValue(myValue);
if(myField.xtype == "tagfield"){
myField.xtype.setValue(myValue);
myField.xtype.inputEl.set({'placeholder':myValue});
}
我想要的是
if(myField.xtype == "tagfield"){
// Automatic Focus OR
// Someway by which I can set the value
}
我假设您的
tagfield
config对象如下所示
var store = Ext.create('Ext.data.ArrayStore',{
fields: [
'abbr',
'state',
'description',
'country'
],
data: [
[0, 'AL', 'Alabama', 'The Heart of Dixie'],
[1, 'AK', 'Alaska', 'The Land of the Midnight Sun'],
[2, 'AZ', 'Arizona', 'The Grand Canyon State'],
[3, 'AR', 'Arkansas', 'The Natural State'],
[4, 'CA', 'California', 'The Golden State'],
[5, 'CO', 'Colorado', 'The Mountain State'],
[6, 'CT', 'Connecticut', 'The Constitution State'],
[7, 'DE', 'Delaware', 'The First State'],
[8, 'DC', 'District of Columbia', "The Nation's Capital"],
[9, 'FL', 'Florida', 'The Sunshine State'],
[10, 'GA', 'Georgia', 'The Peach State'],
[11, 'HI', 'Hawaii', 'The Aloha State'],
[12, 'ID', 'Idaho', 'Famous Potatoes']
]
});
{
xtype: 'tagfield',
fieldLabel: 'Select a state',
store: store,
reference: 'states',
displayField: 'state',
valueField: 'abbr',
filterPickList: true,
queryMode: 'local',
}
通过此配置,如果您在标记字段中选择阿拉巴马州、阿拉斯加州、亚利桑那州等州,则您将获得如下值['AL'、'AK'、'AZ']
,因为在标记字段配置中,您已设置了值字段:'abbr'
,这些值将转到服务器进行保存
重新加载后,如果要选择这些值,则必须按原样给出这三个值。像
if(myField.xtype == "tagfield"){//tagfield is in lower case
myField.setValue(['AL','AK','AZ']); // myField.setValue(myValue);
}
如果您仍然希望聚焦同一字段,并且如果您在聚焦上加载tagfield的存储,那么您可以使用标记字段的focus
方法
if(myField.xtype == "tagfield"){ //tagfield is in lower case
myField.focus(true,true,function(){
myField.getStore().load({
callback: function(records, operation, success) {
myField.setValue(['AL','AK','AZ']);//myField.setValue(myValue);
}
});
});
}
希望这有帮助
如果您已将标记字段用作小部件,则可以在widgetcolumn
上使用onwidgetatch
config,并可以在其上指定函数
请参考。你的意思是你正在经历与之相同的事情吗?@Alexander是的,类似的事情。当我单击焦点时,我的值将显示。所以我只是在想,一旦我加载了,我还能集中精力吗。我也在使用我的代码,但占位符在IE中不起作用。我签入了文档,有一个叫做
preFocus
的东西来避免使用placeholder
,但我不确定如何使用它。你能帮助我如何使用preFocus
或类似的东西吗?我已经检查了tagfield的源代码。请尝试配置选项autolodonvalue:true
是否适合您。它在bug报告中的小提琴中工作。autolodonvalue:true
仅在存储加载后工作。但在我的例子中,我只是在标记域组件聚焦后才开始加载存储。不,autolodonvalue
将在设置值时强制加载存储。至少在6.2.1中-您使用哪个版本?答案为Ok+1。但是,这里我的tagfield
是一个小部件列,只有在tagfield得到关注后,存储才会加载。好吧,让我试试你答案的第二部分。我不能在没有集中注意力的情况下设定商店价值。所以我想要自动聚焦。你有小提琴吗?我会试着制作一把小提琴。