禁用javasscript中的选项/按钮
Disable options/button in javasscript
我有一个javascript代码如下:
p.onRowSelectExtraListener = function(e)
{
var that = e.data.that;
that.actions.selectedRows = that.table.getSelectedRows();
var selected = [];
var disableoption = false;
$('#checkboxes input:checked').each(function() {
selected.push($(this).attr('statusid'));
});
$.each(selected, function(index, value) {
if (value == 27)
{
disableoption = true;
return false;
}
console.log(disableoption);
if(disableoption === true)
{
console.log("calling another function");
//call p.getRowActions and disable the 3rd menu item/button.option.
}
});
};
p.getRowActions = function()
{
var that = this;
var addToGroupOptions = this.data.group.slice(0);
console.log("in get row actions");
if (this.canUnlock == 0)
{
console.log("In Super-IF loop");
}
addToGroupOptions.unshift({id: 'new', name: 'new group'});
//TODO translate
return [
{
option: {id: '4', name: 'add to group'},
options: addToGroupOptions,
type: 'ajax',
func: function(selectedRows, group)
{
that.onAddToGroup(selectedRows, group);
}
},
{
option: {id: '2', name: 'change rights issue'},
type: 'ajax',
func: function(selectedRows, rights) {
that.onChangeRights(selectedRows, rights);
}
},
{
option: {id: '1', name: 'change status'},
options: this.data.status,
type: 'ajax',
func: function(selectedRows, status) {
that.onChangeStatus(selectedRows, status);
}
},
{
option: {id: '3', name: 'edit'},
type: 'ajax',
func: function(selectedRows, edit) {
that.onChangeEdit(selectedRows, edit);
}
}
];
};
现在,在这两个函数中,第二个函数在我加载页面时首先被调用/执行。因此,我可以在应用程序中看到打印的console.log("in get row actions");
以及return[]
语句下的4个选项作为按钮。
现在我的要求是:
禁用第三个选项(id为1的选项名称:在第一个功能中设置disableoption = true
时更改状态。
这怎么可能?
如何访问和删除diffrent函数中定义的属性?
提前谢谢。
p.getRowActions返回一个数组,访问数组中的对象并更改所需对象的属性,一旦修改了对象,就可以用新对象重新组合数组(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)然后将这个校正的数组返回给使用其数据将HTML对象添加到DOM的组件。
另一个选项是在接收从p.getRowActions
返回的数组的函数末尾插入一个回调函数,以便在创建/渲染对象后在DOM中编辑对象。
UPDATE(用于说明解决方案的伪代码):
function some_function_that_consumes_getRowActions_that_is_somewhere_else_that_I_dont_know() {
var arrayOfHTMLOptions = p.getRowActions();
//inserting options to DOM...
var theOptionYouWant = document.getElementById('1');
theOptionYouWant.disabled = true;
}
另一个选项(根据可能需要对该函数进行新更改的潜在即将到来的用例,可能会更优雅)是通过继承覆盖对象"p"的方法,并构建您自己的p.getRowActions
,返回您想要的选项数组,然后您必须更新接收该数组的函数,以便它可以指向新的"p子对象",通过这样做,您将有一种更灵活的方式来不断更改p.getRowActions
。
以下是关于使用Javascript进行面向对象编程的一些很酷的阅读:http://marcelorjava.wordpress.com/2014/06/07/object-oriented-programming-with-java-and-javascript/
- 如何在不需要单击按钮的情况下获取选项的值
- 单击按钮即可在浏览器的新选项卡中打开 Sapui5 详细信息页面
- 复选框/单选按钮-添加所选项目的总价
- PayPal按钮是否有一个简单的选项,其中金额基于一些用户输入
- 更新:仅根据单选按钮和所选选项选择特定项目
- 如何在ASP.NET中单击按钮后激活启动选项卡
- Angular:如何使用ngRepeat并设置默认单选按钮选项
- 使用按钮引用单选按钮选项
- 记住jQuery测验中的单选按钮选项
- 数据禁用按钮选项在 Chrome 上不起作用
- 选择任何一个单选按钮后,单选按钮选项卡焦点无法正常工作
- 使用量角器和黄瓜选择单选按钮选项时出错
- 主干表单提交按钮选项不起作用
- 将用户选择的多个单选按钮选项存储在使用 ng-repeat(s)构建的角度 js 中
- 如何验证单选按钮选项
- Shopify为每个产品创建单选按钮选项
- 不能在Angular.js中使用ng-repeat设置默认选中的单选按钮选项
- 如何基于单选按钮选项触发不同的功能
- 如何将javascript消息弹出框替换为只有ok按钮选项的Jquery消息弹出框
- 我如何在我的Knockout.js向导中获得单选按钮选项的值