0

是否有插件或方法可以使某些表列(不是行)可编辑而其他不可使用 jQuery 编辑?

我已经看到用于单击单元格以使其可编辑的插件,但我的意思是明确地使单元格/列可编辑或不可编辑。我有办法做到这一点,但感觉有点像黑客工作。

这是使列可编辑的功能:

function isEditable(rowArray, headersArray)
{
    var counter = 0;
    var notEditable = ['product code', 'product'];
    for(i in rowArray){
        counter = 0;
        data = headersArray[i].toLowerCase();
        for(a in notEditable){
            if(data == notEditable[a]){
                counter++;
            }
        }
        if(counter > 0){
            rowArray[i] += 'notEditable';
        }
    }
    return rowArray;
}

它将单元格的标题与预定义值数组进行比较,该数组=不可编辑的列。

然后我建立行:

function buildHTMLTableRow(row, mutable)
{       
    output = '';
    output += '<tr>';
    for(var i = 0; i < row.length; i++)
    {
        value = trim(row[i]);
        if(mutable){
            index = value.indexOf('notEditable');
            if(index != -1){
                value = value.substring(0, index);
                output += '<td>' + value + '</td>';
            }
            else{
                output += '<td><input size="5" type="text" value="' + value + '" /></td>';
            }
        }
        else{
            output += '<td>' + value + '</td>';
        }
    }
    output += '</tr>';
    return output;
}

参数决定该mutable行是否可编辑,并indexOf('noteditable')决定函数中的单元格(但几乎是列)isEditable

有没有更好的插件,或者我应该解决我所拥有的?

4

1 回答 1

0

访问这个 jsFiddle 链接:禁用列

以下是数据流:

  1. 我创建了一个名为“rowsD”的行数组。当页面加载时,我正在用这些行填充我的表 (id=myData)。
  2. 现在创建另一个名为disableHeaders的数组,其中我正在传递标题,您需要禁用整个列。
  3. 我正在调用函数disableFields传递disableHeaders作为参数
  4. 在函数中,首先我获取标头的索引,其值等于标头数组中的值
  5. 如果我找到一个,那么从Input标签中我使用 $(this).find('input') 选择器提取Value属性
  6. 最后我用标签标签替换当前的孩子,传递提取的输入标签值
  7. 你也可以注释掉 disableFields(disableHeaders); 实际看到的行,表格最初是如何呈现的

谢谢

于 2012-09-07T16:16:55.180 回答