#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> раньше и использовать это.