Отображать сообщение в jQuery только один раз при отправке

#javascript #jquery #html #forms

#javascript #jquery #HTML #формы

Вопрос:

Когда я отправляю свою форму, я показываю сообщение в jQuery.

Я хочу, чтобы оно появлялось только один раз, когда я отправляю более одного раза

 $('form').submit(function(){
    if ($('#title').val() != '' amp;amp; $('#comment').val() != '')
        $('form').append($('<span>').text('Bug sent').delay(4000).fadeOut(600));
    else
        $('form').append($('<span>').text('Fields are empty').delay(4000).fadeOut(600));

return false;
});
  

Пример: http://jsfiddle.net/bUS8e /

Ответ №1:

Просто удалите все существующие span s в форме: http://jsfiddle.net/pimvdb/bUS8e/1 /.

 $('form span').remove();
  

Обратите внимание, что это также приведет к удалению любых других, не относящихся span к делу файлов, которые вы, возможно, не захотите удалять. В этом случае вы можете добавить класс к span добавляемым вами сообщениям и использовать $('form span.message').remove(); его так, чтобы удалялись только эти сообщения span .

Ответ №2:

Проверьте $('form').text() , содержит ли «Отправленная ошибка»? т.е.

 $('form').submit(function(){
    if ($('#title').val() != '' amp;amp; $('#comment').val() != '')
        if (!/Bug sent/.test($('form').text()) {
            $('form').append($('<span>').text('Bug sent').delay(4000).fadeOut(600));
        }
    else
        $('form').append($('<span>').text('Fields are empty').delay(4000).fadeOut(600));

return false;
});
  

Комментарии:

1. str.test не является функцией. Возможно, какую библиотеку вы используете?

2. Я отредактировал это перед вашим комментарием, но да — я действительно неправильно использовал свои регулярные выражения и строковые переменные. К счастью, я заметил свою собственную ошибку и исправил ее 😉

Ответ №3:

Удалите все интервалы, когда пользователь отправляет форму. Затем добавьте их снова (при необходимости):

Вот так

Ответ №4:

Вы можете добавить span в HTML-код и присвоить ему идентификатор. И вместо span того, чтобы каждый раз добавлять новое, вы просто повторно используете существующее, обращаясь к нему через его идентификатор.

Ответ №5:

Добавьте a div (или любой другой элемент) в свою форму и используйте $('div').html([YOUR STUFF]) вместо $('form').append([YOUR STUFF]) .

Ответ №6:

Вы должны очистить родительский элемент перед:

 $('form').submit(function(){
    if ($('#title').val() != '' amp;amp; $('#comment').val() != '')
        $('form').empty().append($('<span>').text('Bug sent').delay(4000).fadeOut(600));
    else
        $('form').empty().append($('<span>').text('Fields are empty').delay(4000).fadeOut(600));

    return false;
});
  

Комментарии:

1. Не уверен, что это лучшее решение, поскольку все input s также будут удалены.

2. Извините, вы должны добавить <div id=»message»></div> раньше и использовать это.