Всем привет. Мало времени, но решил описать детскую проблему, которая приключилась со мной сегодня.
В общем делал я антиспам защиту для очередного сайта и нужно было банально закинуть почти готовый код + вызов события .submit() для формы, если условия совпадает и передача данных на сервер, чтоб там проверить поля на спам.
В этой краткой статье я покажу вам почему может не работать jquery submit или .submit(), а также в качестве бонуса покажу пример как делать отправку данных с формы через яваскрипт, например по нажатию на ссылку.
Вернемся к моей проблеме.
Код javascript, для вызова события submit у формы, простой:
(function( $ ) { $(document).ready(function(){ $("#submitBTN1").on("click",function(){get_spam_code_in_st($(this)); return false;}); }); function get_spam_code_in_st(XX){ jQuery.ajax({ type: 'POST', url: '...', dataType:'json', data:{ 'nonce': '....', 'action':'...' }, success: function (data) { if(data.work!=""){ .... XX.closest("form").submit(); } } }); } })(jQuery);
Как вы поняли XX.closest("form").submit(); это и есть мой запуск события submit.
Html код тоже стандартный:
<form action="..." method="post"> <input type="text" value="" name="author" placeholder="Имя"/> <input type="text" value="" name="email" placeholder="E-mail"/> <textarea placeholder="Сообщение" name="comment"></textarea> <input id="submitBTN1" type="submit" name="submit" value="Отправить"/> </form>
Ничто не предвкушало беды, нооооо ... увы форма не захотела сабмититься, сабмит формы не работает.
Код проверенный по сто раз, все рабочее, но не судьба.
В общем решение проблемы:
надо удалить вот этот код name="submit" у кнопки отправки комментария.
Переделав форму под такой вариант:
<form action="..." method="post"> <input type="text" value="" name="author" placeholder="Имя"/> <input type="text" value="" name="email" placeholder="E-mail"/> <textarea placeholder="Сообщение" name="comment"></textarea> <input id="submitBTN1" type="submit" value="Отправить"/> </form>
У меня все заработало. Да, и вдогонку хочу сказать, если вы делаете отправку формы по нажатию на ссылку, а в вашей форме параллельно есть кнопка <input type="submit" name="submit" value=""/> , возможно даже скрытая, - то у вас submit также работать не будет 🙂
Как дополнения к этому посту, хочу показать вам маленький код, который покажет вам, как легко и просто сделать отправку формы на яваскрипт.
Хтмл код:
<form action="..." method="post"> <input type="text" value="" name="author" placeholder="Имя"/> <input type="text" value="" name="email" placeholder="E-mail"/> <textarea placeholder="Сообщение" name="comment"></textarea> <a href="#" id="submtCommSnd"></a> </form>
JavaScript код на jQuery:
(function( $ ) { $(document).ready(function(){ $("#submitBTN1").on("click",function(){$(this).closest("form").submit(); return false;}); }); })(jQuery);
Вот и все. Проблема решена.
Если этот пост был вам полезный – поделитесь им со своими друзьями в соц. сетях:
Используя ваш код (jQuery) не работает отправка формы по ссылке. Подскажите в чем еще может быть причина.