如何使用document.createElement(“input”)方法使输入文本字段动态扩展?

时间:2013-12-17 06:26:01

标签: javascript

这是我对这个令人敬畏的社区的第一个问题。

我正在使用此javascript代码构建动态表:

    function addRow(tableID) {

        var table = document.getElementById(tableID);

        var rowCount = table.rows.length;
        var row = table.insertRow(rowCount);

        var cell1 = row.insertCell(0);
        var element1 = document.createElement("input");
        element1.type = "checkbox";
        element1.name = "chkbox[]";
        cell1.appendChild(element1);

        var cell2 = row.insertCell(1);          
        var element2 = document.createElement("input");
        element2.type = "text";
        element2.name = "txtbox[]";
        element2.onkeypress = "this.style.width = ((this.value.length + 1) * 8) + 'px'";
        cell2.appendChild(element2);


    }

按照html代码打印出来:

       <table id="dataTable" style="width: 300px;" border="0">
            <tr>
                <td ><input type="checkbox" name="chk"  /></td>

                <td  <input id="txt" type="text" onkeypress="this.style.width = ((this.value.length + 1) * 8) + 'px';"> </td>
            </tr>
        </table>

我的问题是 - 我希望我的文本输入字段动态消耗,但由于使用'document.createElement(“input”);'在Javascript中,只有第一个文本输入字段动态消耗

2 个答案:

答案 0 :(得分:0)

您可以定义扩展功能并在以后重复使用,如下所示:

expandTextBox = function (tb) {
    tb.style.width = ((tb.value.length + 1) * 8) + 'px';
}

当你创建元素时:

var element2 = document.createElement("input");
element2.onkeypress = function() { expandTextBox(element2); };

在html中:

<input id="txt" type="text" onkeypress="expandTextBox(this)">

请参阅Fiddle

答案 1 :(得分:0)

在javascript中向动态创建的元素添加事件时,您必须将事件代码定义为 function 而不是字符串! 因此,请将addRow函数修改为:

    ...
    element2.onkeypress = function(){this.style.width = ((this.value.length+1)*8)+'px'};