我正在验证表单,如果有问题,我在输入问题后立即添加消息&然后在一段时间后淡出它。问题是我也希望从DOM中删除该消息。
我google了一下,看起来我必须使用fadeout(function(){})
或队列。嗯,在其他情况下也没关系,但是当我插入它并使用相同的线移除时,它有点棘手。还有其他更简单的“一线”方式吗?
我试图添加另一个(更长的延迟),但这根本不起作用。
$("<div style='color: red'>Maximum length is "+$(this).attr('maxlength')+" characters!</div>").insertAfter($(this)).delay(5000).fadeOut().delay(5010).remove();
我也不能真正使用ID,因为它可以同时抛出多个ID,或者用户可以快速修复一个输入并单击提交,它会同时删除旧消息和新消息。
感谢。
Ps。:只有这样做我能想到的是为每个元素生成随机ID并使用该ID删除它,但这太过于复杂恕我直言。
为了澄清:上面的那一行是在一个循环中,循环通过一个表格中的每个输入和textarea,如果仅检查minlength,maxlength和number,它们就很简单。这就是为什么我不能放置一些静态ID / Class,它不会真正起作用,因为我想要它(只删除添加的元素,没有其他元素,即使再次添加相同的消息,因为用户再次提交表单等) 。 THX。
答案 0 :(得分:0)
每条错误消息都与我认为的字段有关,因此您可以为每条错误消息分配一个ID而不会出现任何问题。所以这段代码很有用:
$("<div style='color: red' id="FieldName_error">Maximum length is "+$(this).attr('maxlength')+" characters!</div>").insertAfter($(this));
//This function executes after 2 seconds.
setTimeout(function(){
$("#FieldName_error").fadeOut("slow", function(){
$(this).remove();
})
}, 2000)