Javascript выберите onchange = 'this.form.submit()'
У меня есть форма с выделенным и несколькими текстовыми вводами. Я хочу, чтобы форма была отправлена при изменении выбора. Это работает отлично, используя следующее:
onchange="this.form.submit()"
Однако, если форма также содержит кнопку отправки, форма не будет отправляться при изменении выбора. Я предполагаю какой-то конфликт.
Каковы мои варианты здесь?
Должен ли я использовать что-то вроде
$(this.form).trigger("submit")
вместо этого?
Ответы
Ответ 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();
}