Javascript select onchange ='this.form.submit()'

时间:2011-08-31 17:59:18

标签: javascript jquery select

我有一个带有选择和几个文本输入的表单。我想要在更改选择时提交表单。使用以下方法可以正常工作:

onchange="this.form.submit()"

但是,如果表单还包含提交按钮,则更改选择时表单不会提交。我猜是某种冲突。

我有什么选择?

我应该使用类似的东西 $(this.form).trigger("submit") 代替?

6 个答案:

答案 0 :(得分:53)

你应该可以使用类似的东西:

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

答案 1 :(得分:25)

我的通灵调试技巧告诉我,您的提交按钮名为submit 因此,form.submit指的是按钮而不是方法。

将按钮重命名为其他内容,以便form.submit再次引用该方法。

答案 2 :(得分:10)

如果你正在使用jQuery,那就像这样简单:

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

答案 3 :(得分:5)

有几种方法可以完成。

元素知道它们属于哪种形式,因此您不需要在jquery中包装this,只需调用返回表单元素的this.form即可。然后,您可以在表单元素上调用submit()来提交它。

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

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

答案 4 :(得分:0)

使用jQuery绑定它们并让jQuery处理它:http://jsfiddle.net/ZmxpW/

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

答案 5 :(得分:0)

使用:

<select onchange="myFunction()">

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