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

Jon*_*noB 30 javascript jquery select

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

onchange="this.form.submit()"
Run Code Online (Sandbox Code Playgroud)

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

我有什么选择?

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

Dav*_*mas 54

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

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


SLa*_*aks 25

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

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

  • @mplungjan:完全没有.我认为,完美的答案就像SLaks一样,但是"我只是在猜测,因为你的问题中没有提供任何类型的测试用例,也没有提供足够的信息".:) (5认同)
  • 你怎么知道? (3认同)
  • @mplungjan:它也没有告诉他们他们如何在他们的问题中没有提供充足的信息. (2认同)

Tej*_*ejs 10

如果您正在使用jQuery,它就像这样简单:

 $('#mySelect').change(function()
 {
     $('#myForm').submit();
 });
Run Code Online (Sandbox Code Playgroud)


Bla*_*son 5

有几种方法可以完成.

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

  $('select').on('change', function(e){
    this.form.submit()
  });
Run Code Online (Sandbox Code Playgroud)

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