使用jQuery的html表可编辑和不可编辑的单元格

时间:2012-09-07 14:54:52

标签: javascript jquery html-table

是否有插件或方法可以使某些表格列(不是行)可编辑而其他表格不可编辑 用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函数决定单元格(但几乎是列)。

是否有一个插件可以做得更好,或者我应该解决我的问题?

1 个答案:

答案 0 :(得分:0)

访问此jsFiddle链接:Disable Columns

以下是数据流:

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