2016-04-18 2 views
2

Я рассмотрел несколько вопросов здесь и последовал за ними, но я до сих пор не добился успеха. Я хочу, чтобы форма отправлялась при изменении выбора. У меня есть это:jQuery submit form on select change

HTML:

<form id="form1_currency" action="/" method="post"> 
    <select id="form1_currency" name="currency" class="autosubmit"><option value="47">GBP</option><option value="142">USD</option><option value="44">EUR</option></select> 
    <input id="form1_submit" name="submit" value="OK!" type="submit" /><input type="hidden" name="cms-form" value="Y3VycmVuY3k6cGVyY2hfc2hvcDovdGVtcGxhdGVzL3Nob3AvY3VycmVuY2llcy9jdXJyZW5jeV9mb3JtLmh0bWw6MTQ2MDk3NDgwNg==" /> 
</form> 

Jquery:

$('.autosubmit').on('change', function(){ 
    console.log('Option Changed'); 
    $(this).parent('form').submit(); 
}); 

Но форма не подает. Ручка здесь:

http://codepen.io/mikehdesign/pen/ZWomjv

Помощь высоко оценили!

+0

Это настолько странно !!! Код выглядит прекрасно, если я помещаю обработчик событий для отправки формы и показываю предупреждение, это работает. За исключением того, что форма не отправлена. –

+0

используйте ниже код --- $ (this) .siblings ('input [type = "submit"]'). Click(); instaed из $ (this) .parent ('form'). submit(); – krishna

+0

@krishna - Пожалуйста, не отвечайте на вопросы в комментариях. Комментарии для комментариев, ответы для ответов. – Quentin

ответ

2

Изменить «отправить» имя на другое. Это вызывает проблему.

Смотрите JQuery представить() документацию:

Формы и их дочерние элементы не должны использовать имена входных или идентификаторы, которые конфликт со свойствами формы, например, представить, длину, или метод. Конфликты имен могут вызывать сбивающие ошибки. Полный список правил и проверка разметки этих проблем см. В документе DOMLint.

Так что просто измените значение атрибута имени от submit на все остальное. Working Fiddle

Измененная часть в вашем коде выше это

<input id="form1_submit" name="something" value="OK!" type="submit" />

+0

Зачем оставлять кнопку отправки вообще? суть этого заключалась в том, чтобы разрешить автоподчинение в этой форме, и единственным элементом в форме является выбор валюты - поэтому роль кнопки отправки избыточна - я удалил ее и получил форму для работы - хотя без вашего приятного описания и получил downvoted для этого - но я говорю удалить кнопку в totalis и позволить autosubmission работать. – gavgrif

+0

@gavgrif Форма работает, когда вы удаляете кнопку отправки только потому, что у нее есть 'name =" submit ", которая будет конфликтовать с формой submit. Решение состоит в том, чтобы иметь кнопку, а также предоставить jquery submit для работы, что и делает этот ответ. Что делать, если OP хочет, чтобы обе кнопки отправки и jquery submit работали? ваше решение было более чем обходным решением, чем решение. –

+1

yup - я думаю, вы правы, и мне понравился ваш ответ/описание. Честная оценка. Сообщение удалено - спасибо – gavgrif

-2

Вы можете попробовать это.

$('form').submit(); 
+0

Существующий код уже найдет форму.Это другое, и, возможно, хуже (поскольку он не может справиться с несколькими формами на одной странице), подход, но он имеет ту же проблему. – Quentin