单击特定按钮时禁用某些按钮
Disable certain buttons when you click on a specific button
我有3个按钮,当我单击按钮3时,我希望禁用按钮1和2。我能做到。当我尝试设置另一个侦听器以在单击按钮2时禁用按钮1和3时,它无法正常工作。它似乎处于某种循环中。下面列出了我的代码:
{
text: 'Button 1',
name: 'button1',
cls: 'x-btn-text-icon',
listeners: {"click": function (){
Ext.getCmp("button2").disable();
Ext.getCmp("button3").disable();
}
},
icon: 'public/images/edit.gif'
},{
text: 'Button 2',
name: 'button2',
cls: 'x-btn-text-icon',
listeners: {"click": function (){
Ext.getCmp("button1").disable();
Ext.getCmp("button3").disable();
}
},
icon: 'public/images/edit.gif'
},{
text: 'Button 3',
name: 'button3',
cls: 'x-btn-text-icon',
listeners: {"click": function (){
Ext.getCmp("button1").disable();
Ext.getCmp("button2").disable();
}
},
icon: 'public/images/edit.gif'
}
有没有更简单的方法来实现这一点?我感谢你的帮助。
Ext.getCmp用于id
属性。您的按钮具有name
属性,将name
更改为id
,您的示例应该可以工作。
我想您可能想要的是toggleGroup。
我使用了另一种方式,但我不确定是否符合您的需求。如果它对你有意义,请尝试下面的内容。
- 我创建了一个超出范围的数组来保留按钮id
- 然后做了一个禁用按钮的功能,除了点击
- 我使用按钮组来组织按钮
var buttons = new Array();
var disableButtons = function (btn) {
// here it is to query button group by name
var btns = Ext.ComponentQuery.query('buttongroup, [name=btnGroup]');
var count = btns.length;
for (var i = 1, x = 0; i < count; i++, x++) {
this.buttons[x] = btns[i].id;
}
// this is the tricky part, disable all buttons except the clicked
var index = this.buttons.indexOf(btn);
if (index !== -1) {
this.buttons.splice(index, 1);
}
Ext.Array.each(buttons, function (name) {
Ext.getCmp(name).disable();
})
}
// in any case, I created a function to enable all button status
// just add an other button in the scene and call this function
var enableButtons = function () {
Ext.Array.each(buttons, function (name) {
Ext.getCmp(name).enable();
});
// The following line necessary to keep array clean when user wants to disable
// buttons again. The best way to empty an array, just set length to '0'
buttons.length = 0;
}
// I used these functions for window component. When user click 'ADD' button,
// buttons listener calls this function
{
text: 'EKLE',
scale: 'medium',
disabled: true,
width: 100,
margin: '0 9 0 0',
cls: 'btn-article-save',
id: 'btnArticleSave',
name: '_btnArticle',
listeners: {
click: function () {
var sel = Ext.getCmp('article-grid').getSelectionModel().getSelection();
Ext.each(sel, function (item, index) {
arrArticle.push(item);
});
arrArticleStore.load();
Ext.getCmp('articles-grid').getView().bindStore(arrArticleStore);
Ext.getCmp('articles-grid').show();
var alevel = Ext.ComponentQuery.query('textfield[name=artLevel]');
var avalue = Ext.ComponentQuery.query('textfield[name=artValue]');
var artActions = [];
for (var i = 0; i < alevel.length; i++) {
artActions[i] = {'LEVELS': alevel[i].value, 'VALUES': avalue[i].value}
}
var count = winArticle.down('fieldset[id=article-fieldset]').items.items.length;
for (i = 1; i <= count; i++) {
var container = 'artContainer' + i;
winArticle.down('fieldset[id=article-fieldset]').remove(container);
}
var qry = winArticle.query();
for (var i = 0; i < qry.length; i++) {
if (qry[i].xtype === 'textfield') {
var txt = qry[i].id;
Ext.getCmp(txt).reset();
articles.loadData([], false);
}
}
var _name = this.name;
disableButtons(_name);
}
}
}
相关文章:
- 如何隐藏按钮单击事件上的占位符
- 从Web服务器下载图像按钮单击使用JavaScript
- 在SweetAlert中传递ASP.NET按钮单击事件
- 单选按钮单击可刷新/更改网站的小区域
- 调用按钮单击事件 ajax 加载的用户控件
- 附加 jQuery 代码以在加载和按钮单击时运行
- 在按钮单击时将图像URL数据显示到弹出框中,而无需禁用背景
- 按钮单击服务器单击
- 触发单选按钮单击,并在页面刷新时记住选择
- 如何使用 javascript 而不是使用控制器中的方法在 rails 中呈现部分按钮单击
- jQuery UI 选项卡 - 将参数设置为下一个/上一个按钮单击
- 如何在 Angular JS 中的按钮单击上添加类
- 当元素上有多个类时触发按钮单击事件
- 如何在 HTML 中的按钮单击上更改图像(IMG URL 每次来自服务器)
- 如何使用javascript刷新我的html页面时清除按钮单击
- 阻止后退按钮 - 单击按钮时忽略
- 如何制作按钮.单击“开始时不运行”
- Rails:尝试在按钮单击时渲染部分
- 在页面加载时调用函数,在按钮单击时再次调用函数,但参数不同
- 如何在服务器端的文本中添加按钮单击事件