jQuery:当最后一个文本框被填充时创建新的文本框
jQuery : Create new text box when the last textbox is filled
我正在构建一个表单,用户可以在其中输入执行任务所需的工具。我为用户生成了两个输入框,但我希望他们能够有更多的输入,如果需要的话。我创建了一些jQuery,在单击最后一个文本框时添加一个新的文本框,暗示他们可能需要另一个文本框。代码如下:
$( ".sidebar input:last-of-type" ).click(function(){
$( ".sidebar input:last-of-type" ).after( '<input type="text" placeholder="Tool Name" />' );
});
可以工作,但它只绑定到最初生成的第二个文本框。我想要发生的是如果在用户添加了额外的工具之后,每次他们点击最后一个新生成的输入,它会生成另一个,以此类推。我的猜测是DOM仍然认为第二个文本框是"最后一个",尽管在最初创建DOM之后添加了另一个文本框。是否有一种方法来重新渲染DOM或改变我的jQuery,使它始终选择最后的输入框?
动态添加的内容不能用于.click()
。您需要在父元素.sidebar
上使用.on("click")
,并指定子选择器作为第二个参数。
$( ".sidebar" ).on("click", "input:last-of-type", function(){
$( ".sidebar input:last-of-type" ).after( '<input type="text" placeholder="Tool Name" />' );
});
JSFiddle
try this
$( "input" ).on('click' , addNewInput);
function addNewInput (){
if($(this).is(':last')){
$( this ).after( '<input type="text" placeholder="Tool Name" />' );
$( "input" ).on('click' , addNew);
}
}
http://jsfiddle.net/yann86/3xh09wab/这是我的解决方案,它寻找按键以及点击(假设人们可能是选项卡)。$ (' .sidebar")。On是必需的,因为最后一个输入是动态的,这是您可以瞄准动态内容的方式。
$('.sidebar').on( 'keypress click' , 'input:last-of-type' , function(e){
$(this).after('<input type="text" placeholder="Tool Name" />')
});
JSFiddle: http://jsfiddle.net/nlaffey/fsuo5rmg/
相关文章:
- onkeyup无法动态创建多个文本区域
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- 如何在 JavaScript 中创建输入文本框
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- 如何为动态创建的文本区域中输入的值更新ng模型
- 创建闪烁“;文本“;在javascript中
- 使用删除文本创建新行
- 使用其他页面上表单的文本创建链接
- 数组函数不适用于从元素文本创建的JavaScript数组
- 从空格分隔的文本创建和实现数组:AngularJS
- 由表达式文本创建的正则表达式是否共享单个实例
- 如何在 RaphaelJS 中根据需要为文本创建默认属性并链接其他属性
- 如何使用在用户输入后继续显示的前置文本创建文本字段
- 如何从 html 格式的文本创建元素
- 从文本区域中的选定文本创建列表html
- 在DIV中动态地围绕所选文本创建SPAN
- 在Jquery UI对话框中基于触发器锚点的文本创建动态按钮名称
- 如何在飞行中用文本创建链接?——JQuery初学者
- 从文本创建链接
- 如何仅为文本创建正则表达式模式