1

我需要实现一个生成输入框,并且在生成时有一个默认值,该默认值应该自动聚焦并且应该选择所有文本;

这是我在 JS 中的函数,假设已单击按钮并调用此函数

function createFolder()
{
   var newTextBoxDiv = $(document.createElement('div')).attr({   
                        "id" : 'TextBoxDiv',
                        "class" : 'TextBoxDiv+ctr'
                        });   
   newTextBoxDiv.html('<input type="text" name="folder_name" id="folder_name"   value="New Folder"/>');

   $("#folder_name").focus(function() { $(this).select(); } );

   newTextBoxDiv.appendTo("#fileTreeView");

}
4

2 回答 2

0

在某处设置计数器以跟踪新 ID 并将值插入到新添加的元素定义中。并在附加事件之前附加元素。交换函数中的最后两行代码。

var folderCount = 0;

function createFolder() {

    var newTextBoxDiv = $(document.createElement('div')).attr({
        "id": 'TextBoxDiv_' + folderCount ,
        "class": 'TextBoxDiv+ctr'
    });
    newTextBoxDiv.html('<input type="text" name="folder_name_' + folderCount + '" id="folder_name_' + folderCount + '" value="New Folder"/>');
    newTextBoxDiv.appendTo("#fileTreeView");

    $("#folder_name_" + folderCount).focus().select();

    folderCount++;
}
于 2012-09-06T04:02:59.773 回答
0

$("#folder_name")当元素尚未附加到文档时将返回空。

尝试这个:

function createFolder() {
    var newTextBoxDiv = $('<div id="TextBoxDiv"/>').addClass("TextBoxDiv+ctr");
    var input = $('<input type="text" name="folder_name" id="folder_name"  value="New Folder"/>').focus(function () {
        $(this).select();
    });
    newTextBoxDiv.append(input).appendTo("#fileTreeView");
}

而且我假设该函数将被多次调用,那么您需要为这些元素创建唯一的 ID。

于 2012-09-06T03:48:10.517 回答