我想在文本字段(文本字段右侧的x)中实现X按钮以清除输入的文本。我见过很多具有此功能的extjs应用程序。我该怎么做呢?任何建议或意见将非常感谢... 感谢
它看起来像这样......
答案 0 :(得分:12)
您必须使用 Ext.form.field.Trigger 。这是
的一个例子Ext.define('Ext.ux.CustomTrigger', {
extend: 'Ext.form.field.Trigger',
alias: 'widget.customtrigger',
initComponent: function () {
var me = this;
me.triggerCls = 'x-form-clear-trigger'; // native ExtJS class & icon
me.callParent(arguments);
},
// override onTriggerClick
onTriggerClick: function() {
this.setRawValue('');
}
});
Ext.create('Ext.form.FormPanel', {
title: 'Form with TriggerField',
bodyPadding: 5,
width: 350,
renderTo: Ext.getBody(),
items:[{
xtype: 'customtrigger',
fieldLabel: 'Sample Trigger',
emptyText: 'click the trigger'
}]
});
为便于测试,此处为 JSFiddle
答案 1 :(得分:3)
这对CSS有用:
.x-form-clear {
background-image: url('../../resources/themes/images/default/form/clear-trigger.gif');
background-position: 0 0;
width: 17px;
height: 22px;
border-bottom: 1px solid #b5b8c8;
cursor: pointer;
cursor: hand;
overflow: hidden;
}
.x-form-clear-over {
background-position: -17px 0;
border-bottom-color: #7eadd9;
}
.x-form-clear-click {
background-position: -68px 0;
border-bottom-color: #737b8c;
}
Ext.define('Ext.ux.form.field.Clear', {
extend: 'Ext.form.field.Trigger',
alias: 'widget.clearfield',
triggerBaseCls: 'x-form-clear',
onTriggerClick: function() {
this.setValue();
}
});
Ext.create('Ext.container.Container', {
renderTo: Ext.getBody(),
items: [
Ext.create('Ext.ux.form.field.Clear', {
fieldLabel: 'Clear Field',
cls: 'clear-trigger'
})
]
})
答案 2 :(得分:3)
或者使用这个'clearbutton'插件:http://www.eekboom.de/ClearButton.html
我喜欢它,因为它只是一个插件,一行,而不需要自定义子类。
此外,它可以用于各种领域,而不仅仅是在文本领域。
答案 3 :(得分:2)
您可以在Extjs 5.0及更高版本中使用带有触发器的Ext.form.field.Text
,无需定义新类型。
var textfield = Ext.create('Ext.form.field.Text', {
triggers: {
clear: {
cls: 'x-form-clear-trigger',
handler: function () {
this.setValue('');
}
}
}
});
触发器处理程序的范围是Ext.form.field.Text
组件。
您可以拥有多个触发器,也可以使用MVVM模型。例如:
var textfield = Ext.create('Ext.form.field.Text', {
triggers: {
clear: {
cls: 'x-form-clear-trigger',
handler: function () {
this.setValue('');
}
},
search: {
cls: 'x-form-search-trigger',
handler: 'onSearch'
}
}
});
search
触发器使用处理函数,即onSearch
,它在具有Ext.form.field.Text
对象的组件的控制器中定义。
答案 4 :(得分:1)
在ExtJS 6+中,您还可以在Ext.form.field.Text
上添加以下2个配置,并使用内置更改侦听器显示/隐藏触发器
triggers: {
clearText: {
cls: 'clear-text-trigger-icon',
handler: function() {
this.setValue('');
}
}
},
listeners: {
change: function(textField) {
if (textField.getValue()) {
textField.setHideTrigger(false);
} else {
textField.setHideTrigger(true);
}
}
}