gpt4 book ai didi

javascript - 禁用 javascript 中的选项/按钮

转载 作者:行者123 更新时间:2023-12-03 11:55:11 25 4
gpt4 key购买 nike

我有一个 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时更改状态。

这怎么可能?

如何访问和删除不同函数中定义的属性?

提前致谢。

最佳答案

p.getRowActions 返回一个数组,访问数组中的对象并更改所需对象的属性,一旦对象被修改,您可以用新对象( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice )重新组装数组,然后返回此 < em>更正数组到使用其数据以将 HTML 对象添加到 DOM 的组件。

另一个选项是在接收从p.getRowActions返回的数组的函数末尾插入一个回调函数,以便您可以在 DOM 中编辑对象<强>创建/渲染后。

更新(用于说明解决方案的伪代码):

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/

关于javascript - 禁用 javascript 中的选项/按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25639389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com