Javascript jquery单击函数不适用于每个输入字段
在我的页面上,当我按下“Schritt hinzufügen”按钮时,我可以创建一个带有2个字段(1x输入类型文本,1x文本区域)的新div容器。 如果我按下“Schritt entfernen”按钮,它将移除最后一个容器。我使用jquery执行此操作。如果我按下按钮“Erstellen”,jquery将检查是否所有字段都已填充(没有输入字段类型文件)。如果某些字段未填充,则会显示红色边框 但是现在我想,当我聚焦一个输入字段时,红色的边缘会消失。它不是100%有效。在这段代码上,它可以工作(不是用jquery创建的):Javascript jquery单击函数不适用于每个输入字段,javascript,jquery,html,css,Javascript,Jquery,Html,Css,在我的页面上,当我按下“Schritt hinzufügen”按钮时,我可以创建一个带有2个字段(1x输入类型文本,1x文本区域)的新div容器。 如果我按下“Schritt entfernen”按钮,它将移除最后一个容器。我使用jquery执行此操作。如果我按下按钮“Erstellen”,jquery将检查是否所有字段都已填充(没有输入字段类型文件)。如果某些字段未填充,则会显示红色边框 但是现在我想,当我聚焦一个输入字段时,红色的边缘会消失。它不是100%有效。在这段代码上,它可以工作(不是
AllgemeinesZum教程
蒂泰尔德斯教程酒店
Autor des教程
贝施雷本德教程酒店
我需要查看创建新元素的函数才能完全确定,但从我看到的情况来看,我认为在创建新元素时需要重新应用单击侦听器。它们不是“追溯性”的,这意味着您添加的“单击”将针对您设置它们时dom中的内容,而不是您随后创建的新元素
我试着通过控制台在你的页面上用你的代码设置点击事件,效果很好。
因此,在创建新元素时,您可能可以使用以下内容:
$(your_new_element).click(function(){
$(this).removeClass("empty_field");
});
在要为其执行此行为的每个创建的元素上
编辑:
大概是这样的:
$(add_button).click(function(){ //on add input button click
if(x < max_fields){ //max input box allowed
$(wrapper).append('<div class="step"><div class="header_step">Schritt '+ x +' des Tutorial\'s</div><div class="body_step"><a class="create_tutorial_a">Titel des Schrittes</a><input name="input_title_name'+x+'" class="create_tutorial_input" type="text" /><br><a class="create_tutorial_a">Bild</a><input type="file" /><br><br><a class="create_tutorial_a_full_width">Beschreibung des Schrittes</a><br><textarea class="create_tutorial_textarea" name="input_description_name'+x+'"></textarea></div>');
x++; //text box increment
}
add_click_events();
});
function add_click_events(){
$('input[type="text"]').last().click(function(){
$(this).removeClass("empty_field");
});
$('textarea').last().click(function(){
$(this).removeClass("empty_field");
});
}
$(添加按钮)。单击(函数(){//在添加输入按钮上单击
如果(xBild
Beschreibung des Schrittes
');
x++;//文本框增量
}
添加点击事件();
});
函数添加\单击\事件(){
$('input[type=“text”]”)。最后一个()。单击(函数(){
$(此).removeClass(“空_字段”);
});
$('textarea').last()。单击(函数(){
$(此).removeClass(“空_字段”);
});
}
并在第一次启动时添加add_click_events()。仅供参考,因为您已经将
add_按钮
和remove_步骤
定义为jQuery元素,所以在附加click处理程序时不需要额外将它们包装在bling中。我不确定是否有任何性能影响(或者jQuery是否足够聪明,不会创建另一个jQuery对象)。无论如何,以下内容就足够了:)var add_button=$(“#add_step”);添加按钮。单击(函数(){…})哦,谢谢你的提示!我没有看到你的评论(对不起!)@Julien没有在每次创建新元素时重新定义单击处理程序,为什么不直接使用它呢?@Sean3z我想你是对的,它会更干净、更高效。@JulienGrégoire谢谢你的回答!你帮了我很多!:)