<form name="form" action="" method="POST" > ............................................................................ <input type="submit" value="button" id="abc" name="abc" onclick="function.myfunction('{$id}');"/>
<input type="submit" value="button" id="abc" name="abc" onclick="function.myfunction('{$id}');return false;"/>
<input type="button" value="Надпись на кнопке" id="abc" name="abc" onclick="myfunction('{$id}');"/> <script> function myfunction(id){ $ajax(........); } </script>
?сабмит уже не сабмит, форма не отправляется.
<script> $( "form" ).submit(function( event ) { event.preventDefault(); ........ }); </script>
Loadырь, При event.preventDefault(); та же ситуация, что и при false.К тому же, если так
то это дело надо на клик повесить$( "form" ).submit(function( event ) {
event.preventDefault();
........
});
</script>
<script> $('#abc').on('click',function(e){ e.preventDefault(); $( "form" ).submit() }); }); </script>
Для этого надо их выдрать из нужной формы и отправить на указанный урл. Чего в вашей функции видимо нет.но так сабмит уже не сабмит, форма не отправляется.
и не должны. Для этого и делается return false. А отправлять данные формы вы должны уже в своей функции. Вам уже собственно все ответили.Val, То и значит, что при return:false, данные формы не отправляются.
А в целом, гугл же прекрасно отвечает на ваш вопрос.
Если же принципиально самому получать данные из формы и отправлять их, то вероятно нужно сделать как то так:
форма
<form id="myform" action="УРЛ САБМИТА" method="post" enctype="multipart/form-data" accept-charset="utf-8"> <textarea name="message"></textarea> <input type="submit" name="dosubmit" value="Отправить"> </form>
<script type="text/javascript"> function toJSON (form) { var o = {}; var a = form.serializeArray(); $.each(a, function() { if (o[this.name] !== undefined) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; } $(function (){ $('#myform').on('submit', function (){ form_data = toJSON($(this)); url = $(this).attr('action'); $.post(url, form_data, function(result){ // тут что-то делаете с полученными данными // ответ должен быть в формате json // если json не нужен, то последний параметр ниже нужно убрать }, 'json'); return false; }); }); </script>
Ничего не надо указывать. Это действие для формы.К тому же нужно в .submit() указать какую кнопку слушать
Это самое верное. Здесь наиболее понятно по-русски.курю маны на эту тему.
Я это не понимаю.Если можете приведите пример, как сабмит выдрать из формы и оставить его рабочим.Для этого надо их выдрать из нужной формы и отправить на указанный урл. Чего в вашей функции видимо нет.
Fuze,
Я понимаю, что вы человек занятой и читать весь пост нет время, поэтому напишу ещё раз в чём проблема. Всё вами написанное это хорошо и красиво, но с этим я вроде разобрался и не вижу отличия от стандартных методов. Поэтому делаю так.
Вот форма
<form name="form" action="" method="POST" > ............................................................................ <input type="submit" value="button" id="1" name="ОДИН" onclick="$('#form').submit();function.myfunction('{$id}');"/> <input type="submit" value="button" id="2" name="ДВА"/>
if($do == '1'){ if(cmsCore::inRequest('ДВА')){ ............................................. } if(cmsCore::inRequest('ОДИН')){ ............................................. $do == '2' } } if($do == '2'){ if($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') { cmsCore::halt(); } ............................................ }
Всё это работает, но дело в том, что после сабмита результат аякса показывается на мгновение и сразу происходит перезагрузка и как следствие белая страница. И дело не в аяксе. Без него тоже самое.Результат-перезагрузка.Может мне и разъяснили как решить эту проблему, но что то я проглядел.Прошу носом тыкнуть ещё раз.
попробуте вместо
<form name="form" action="" method="POST" > ............................................................................ <input type="submit" value="button" id="1" name="ОДИН" onclick="$('#form').submit();function.myfunction('{$id}');"/> <input type="submit" value="button" id="2" name="ДВА"/>
<form name="form" action="" method="POST" > ............................................................................ <input type="submit" value="button" id="1" name="ОДИН" onclick="function.myfunction('{$id}');"/> <input type="submit" value="button" id="2" name="ДВА"/>
о с этим я вроде разобрался
<input type="submit" value="button" id="1" name="ОДИН" onclick="$('#form').submit();function.myfunction('{$id}');"/>
Вы точно прочитали, что я написал?)
$('#form').submit();
сразу сабмитит вашу форму. Кроме этого нет return false, поэтому у вас форма просто будет сабмититься ВСЕГДА.
function.myfunction('{$id}');
это не выполняется. Вернее начинает выполняться, но прерывается, т.к. страница перегружается после $('#form').submit();
Я вам дал рабочий пример, вам туда нужно подставить данные и все.