Sencha touch sencha触摸文本字段清除事件
我试图在SenchaTouch的文本字段中实现一个列表过滤器。例如,我有一堆联系人,当我在字段中键入时,它可能会按名称过滤。当我点击圆形X按钮清除文本字段时,我想重置过滤器以过滤所有联系人 问题是,我似乎想不出一种方法来检测点击清除按钮。似乎没有任何类型的事件,而且我似乎无法解决问题 如果有人知道如何在sencha touch中检测文本字段清除,我将不胜感激Sencha touch sencha触摸文本字段清除事件,sencha-touch,Sencha Touch,我试图在SenchaTouch的文本字段中实现一个列表过滤器。例如,我有一堆联系人,当我在字段中键入时,它可能会按名称过滤。当我点击圆形X按钮清除文本字段时,我想重置过滤器以过滤所有联系人 问题是,我似乎想不出一种方法来检测点击清除按钮。似乎没有任何类型的事件,而且我似乎无法解决问题 如果有人知道如何在sencha touch中检测文本字段清除,我将不胜感激 我已经在safari和xcode模拟器中进行了尝试,并且正在使用sencha touch 1.1.0。我错过什么了吗?当它实际上是一个移动
我已经在safari和xcode模拟器中进行了尝试,并且正在使用sencha touch 1.1.0。我错过什么了吗?当它实际上是一个移动应用程序时,这不是一个问题吗?您可以在文本字段内的ClearIConContainer上侦听点击事件,或者覆盖onClearIconTap方法
Ext.setup({
icon: 'icon.png',
tabletStartupScreen: 'tablet_startup.png',
phoneStartupScreen: 'phone_startup.png',
glossOnIcon: false,
onReady: function() {
var searchField = new Ext.form.Search({
name : 'search',
placeHolder: 'Search',
useClearIcon: true,
onClearIconTap: function() {
if (!this.disabled) {
this.setValue('');
console.log('onClearTap: Clear button tapped!');
}
}
});
var viewport = new Ext.Panel({
fullscreen: true,
dockedItems: [{
xtype: 'toolbar',
dock: 'top',
items: [searchField]
}]
});
console.log(searchField.useClearIcon);
searchField.mon(searchField.clearIconContainerEl, {
scope: searchField,
tap: function() {
if (!this.disabled) {
console.log('clearIconContainerEl: Clear button tapped!');
}
}
});
}
});
对于sencha touch 2.0用户: 如果您使用的是新的mvc结构,那么您可以在控制器初始化中使用它
this.control({
'#yourTextFieldId clearicon': {
tap: function(){console.log('ClearICON tapped');}
}
....
)};
问题是SenchaTouch没有添加小X。这是html5“搜索”输入的一个功能。要捕获此事件,您需要查找搜索事件。我是如何解决这个问题的,我编辑了sencha-touch.js 我修改了-
if (this.fieldEl) {
this.mon(this.fieldEl, {
focus: this.onFocus,
blur: this.onBlur,
keyup: this.onKeyUp,
paste: this.updateClearIconVisibility,
mousedown: this.onBeforeFocus,
scope: this
});
将来-
if (this.fieldEl) {
this.mon(this.fieldEl, {
focus: this.onFocus,
blur: this.onBlur,
keyup: this.onKeyUp,
paste: this.updateClearIconVisibility,
mousedown: this.onBeforeFocus,
search: this.onSearch,
scope: this
});
Ext.form.Text=Ext.extend(Ext.form.Field,{
现在,在searchfield的实现中,我可以创建一个名为onSearch的函数,当调用“search”事件时将调用该函数事件不仅是为X调用的,而且是为诸如enter键之类的某些东西调用的。底线是sencha touch 1.1根本不检查此事件,这是X唯一触发事件的时间,因此唯一的解决方案是修改sencha touch.js。我重写onClearIconTap以触发清除事件。如果useClearIcon设置为true,onClearIconTap为hit、 然后我可以捕捉到清晰的事件。如果没有onClearIconTap,这将永远不会起作用。我很高兴被证明是错误的…谢谢你的回答!这也是一个很好的解决方案。是的,只有useClearIcon是真的,这才有可能。:)onClearIconTap覆盖方法和ClearIContainerel tap事件都可以工作。实际上,它们或多或少是相同的,因为ClearIContainerel tap事件触发onClearIconTap方法,因此与其说它是功能性的,不如说它是一个架构决定。下面是运行的代码,请您自己看:注意,实际上不需要这样做更改sencha-touch.js文件中的某些内容。因为这使得更新到新版本的sencha库非常困难。最好覆盖您自己文件中的功能。因为它都是JavaScript,所以这样做没有问题。