Подтвердить что ты не робот

Javascript выберите onchange = 'this.form.submit()'

У меня есть форма с выделенным и несколькими текстовыми вводами. Я хочу, чтобы форма была отправлена ​​при изменении выбора. Это работает отлично, используя следующее:

onchange="this.form.submit()"

Однако, если форма также содержит кнопку отправки, форма не будет отправляться при изменении выбора. Я предполагаю какой-то конфликт.

Каковы мои варианты здесь?

Должен ли я использовать что-то вроде $(this.form).trigger("submit") вместо этого?

4b9b3361

Ответ 1

Вы должны использовать что-то похожее на:

$('#selectElementId').change(
    function(){
         $(this).closest('form').trigger('submit');
         /* or:
         $('#formElementId').trigger('submit');
            or:
         $('#formElementId').submit();
         */
    });

Ответ 2

Мои психические навыки отладки говорят мне, что ваша кнопка отправки называется submit.
Поэтому form.submit относится к кнопке, а не к методу.

Переименуйте кнопку на другое, чтобы form.submit снова ссылался на метод.

Ответ 3

Если вы используете jQuery, это так просто:

 $('#mySelect').change(function()
 {
     $('#myForm').submit();
 });

Ответ 4

Есть несколько способов сделать это.

Элементы знают, с какой формой они принадлежат, поэтому вам не нужно обертывать this в jquery, вы можете просто вызвать this.form, который возвращает элемент формы. Затем вы можете вызвать submit() в элементе формы, чтобы отправить его.

  $('select').on('change', function(e){
    this.form.submit()
  });

: https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement

Ответ 5

Свяжите их с помощью jQuery и сделайте jQuery обработкой: http://jsfiddle.net/ZmxpW/.

$('select').change(function() {
    $(this).parents('form').submit();
});

Ответ 6

Использование:

<select onchange="myFunction()">

    function myFunction() {
        document.querySelectorAll("input[type=submit]")[0].click();
    }