Несколько проблем с jquery .html()
.Ниже приведен код, который изменяет значение ввода в текстовом поле с «Введите адрес электронной почты» на «», когда они фокусируются, и, если они ничего не вводили, переводит «Введите адрес электронной почты» обратно на размытие.
IЯ использую jquery .html()
с .post()
для phpmailer, чтобы обновить содержащий div с "Отправка ...", "Успешно отправлено", "Неудачно" и т. д.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#emailaddressinput").focus(function(){
if ($(this).val() == 'Enter email address') {
$(this).val('');
}
});
$("#emailaddressinput").blur(function(){
if (!$.trim($(this).val())) {
$(this).val('Enter email address');
}
});
});
</script>
Вот код, который ДОЛЖЕНPHPMailer.В случае успеха ответ 'true'
.Однако, когда это терпит неудачу, он использует dotimeout.js, чтобы задержать 3 секунды, а затем использует jquery .html
, чтобы вернуть исходную форму на место.Когда это происходит, приведенный выше код больше не работает.Внизу мой оригинальный HTML.
<script src="lib/dotimeout.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#emailbutton').click(function(e) {
e.preventDefault();
var email = $('#emailaddressinput').val();
//write 'sending...' or something
$('#emailinputcontainer').html('Sending, please wait.');
var generated_coupon_id = '2';
var dataString = 'email=' + email + '&generated_coupon_id=' + generated_coupon_id;
$.post('send.php', dataString, function(data){
//do stuff
if(data=='true'){
//say "message sent!"
$('#emailinputcontainer').html('Your coupon has been emailed!');
} else {
//say error
$('#emailinputcontainer').html('There was an error. Please try again.');
$.doTimeout(3000,function() {
$('#emailinputcontainer').html('<input id="emailaddressinput" type="text" value="Enter email address" /><a id="emailbutton" href="#" style="margin: 0 !important;"><span class="buttontext" >Email coupon</span></a>');
});
}
});
});
});
</script>
Вот оригинальный HTML-код формы:
<div id="emailinputcontainer">
<input id="emailaddressinput" type="text" value="Enter email address" /><a id="emailbutton" href="#" style="margin: 0 !important;"><span class="buttontext" >Email coupon</span></a>
</div>
Как мне заставить работать мой оригинальный скрипт в верхней части этой страницыснова, когда электронное письмо не удается, и я использую .html()
для перезагрузки исходного содержимого.
РЕДАКТИРОВАТЬ: На самом деле, я возился дальше, и теперь .post()
не будет работать, что гораздо важнее!