0

我正在验证表单,如果有问题,我会在输入有问题后立即添加一条消息,然后在一段时间后将其淡出。问题是我还想从 DOM 中删除该消息。

我用谷歌搜索了一下,看起来我必须使用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 将其删除,但恕我直言,这太复杂了。

澄清一下:上面的那一行在一个循环中,它循环遍历表单中的每个输入和文本区域,如果只检查 minlength、maxlength 和 numbers,它们就很简单。这就是为什么我不能放一些静态 ID/类,它不会像我想要的那样工作(仅删除添加的元素,没有其他元素,即使在用户再次提交表单时再次添加了相同的消息等) . 谢谢。

4

1 回答 1

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)
于 2015-03-09T04:20:19.000 回答