onclick при submit
Здравствуйте.Прошу помочь разобраться.Есть код в смарти шаблоне.
{literal}
<style>
.hide{display:none;}
</style>
{/literal}
<div class="hidden">
<form action="" method="POST" name="msgform" enctype="multipart/form-data">
<input type="hidden" name="prev" value="1" />
...................................................
<input type="submit" name="gosend" id="gosend" value="{$LANG.SEND}" style="font-size:16px"/>
<input type="button" onclick="document.msgform.submit();" id="prev" value="prev" style="font-size:16px"/>
</form>
</div>
<div class="hidden hide">
{include file='com_forum_preview.tpl'}
</div>
Всё работает.Но не могу сменить при клике класс hide у hidden.Как только не пробовал.И в инпут дописывал и в отдельную ф-цию.Не хочет при submit работать.Верхний див остаётся, а нижний на секунду мелькает и опять скрывается. |
ureech, попробуйте
<input type="button" onclick="showDiv();" id="Button2" value="prev" style="font-size:16px"/> Эту кнопку лучше вынести из формы. и
function showDiv() {
document.getElementsByClassName('hidden hide')[0].style.display = "block";
document.msgform.submit();
}
А кнопка submit при этом вроде бы и не нужна |
А нужно, похоже, совсем без submit и, соответственно, перезагрузки страницы, например
http://smartlanding.biz/otpravka-for...-stranicy.html |
Нет... Делал и вот так
<!DOCTYPE html>
<html>
<head>
<title></title>
<style>
.hide{display:none;}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
</script>
<script>
$(function () {
$("#form").onsubmit = function () {
var form_data = $("#form").serializeArray;
$.ajax({
url: '',
type: 'POST',
data: form_data
});
$(".hide").style.display = "block";
};
});
</script>
</head>
<body>
<div class="hidden">
<form action="#" id="form">
<input type="hidden" name="prev" value="1" />
<input type="submit" name="submit">
</form>
</div>
<div class="hide">
скрытый див
</div>
</body>
</html>
все равно обновляется |
Dilettante_Pro,
попробуй...
$(function () {
$("#form").submit = function () {
var form_data = $("#form").serializeArray;
$.ajax({
url: '',
type: 'POST',
data: form_data
});
$(".hide").style.display = "block";
return false;
};
});
|
Цитата:
DynkanMaclaud, так тоже не работает, в любом случае происходит перезагрузка.Видно придётся с другой стороны к проблеме подходить. |
ureech,а так?
<form action="" method="POST" id='myForm' name="msgform" enctype="multipart/form-data">
<input type="hidden" name="prev" value="1" />
<input type="submit" name="gosend" id="gosend" value="{$LANG.SEND}" style="font-size:16px"/>
</form>
<div class="hidden hide">
{include file='com_forum_preview.tpl'}
</div>
$(document).ready(function() {
$('#myForm').submit(function(e) {
e = e || event;
var form_data = $(this).serialize();
$.ajax({
type: "POST", //Метод отправки
url: "your path", //путь до php фаила отправителя
data: form_data,
success: function() {
$('.hide').addClass('.yourClass');
$('.hide').removeClass('.hide');
alert('ok');
}
});
e.preventDefault();
})
})
Здесь проблема не в аяк запросе а в том что событие submit по умолчанию перезагружает страницу, поэтому в обработчике нужно написать e.preventDefault();, вот на тестовой странице ссылка, внизу есть форма и она работает по скрипту выше, если у вас перезагрузка продолжается то почистите кэш... |
Цитата:
e.preventDefault(); не помог.Ладно, возможно дело в специфики смарти, погуглю это дело. |
ureech,
отправляет она форму, раз алерт вывела))) зачем же мне приводить нерабочий пример?)) ты 111111 везде вводил |
| Часовой пояс GMT +3, время: 10:33. |