2017-07-18 90 views
0

我有一个页面上的格式如下:使用jQuery提交表单

<form action="/" method="post"> 
<select id="SelectedMonth" name="SelectedMonth"> 
<option>7/1/2017</option> 
<option>6/1/2017</option> 
</select> 
</form> 

我尝试使用下面的jQuery片段提交表单。 jquery代码驻留在表单之外,并且表单是页面上唯一的表单。

$("#SelectedMonth").change(function() { 
     alert(this.value); 
     $('form').submit(function (event) { 
     alert("Submitted"); 
     event.preventDefault(); 
     }); 
    }); 

第一个警报被触发并显示选定的值,但提交从未触发。

看起来这是非常简单的,但它不工作。我错过了什么?

TIA

+0

删除此代码 **事件。的preventDefault(); ** – ravi2432

+0

@ ravi2432这不是问题(并且,该行在* alert()之后)。问题在于表单永远不会首先提交,所以事件永远不会触发。 –

回答

0

改变行动和让它空白 和改变功能这样

$("#SelectedMonth").change(function() { 
    $('form').submit(); 
}); 

,也将努力

0

这是因为,尽管你可以更改或删除选择的元素向下(从而导致第一alert()火),你有没有机制提交表单,所以第二个没有。

您需要添加一个submit按钮,以便可以触发formsubmit事件。

此外,您拥有代码的方式,除非先在下拉列表中更改您的选择,否则事件处理程序不会实际触发。你可能不想要这种行为。这两个事件处理程序应该彼此独立设置。

$("#SelectedMonth").change(function() { 
 
    alert(this.value); 
 
}); 
 

 
$('form').submit(function (event) { 
 
    alert("Submitted"); 
 
    event.preventDefault(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form action="/" method="post"> 
 
    <select id="SelectedMonth" name="SelectedMonth"> 
 
    <option>7/1/2017</option> 
 
    <option>6/1/2017</option> 
 
    </select> 
 
    <button type="submit">Submit</button> 
 
</form>

0

你把更改事件内提交事件尝试,并添加一个提交按钮提交事件

$("#SelectedMonth").change(function() { 
     alert(this.value); 
    }); 

$('form').submit(function (event) { 
     event.preventDefault(); 
alert("Submitted"); 
     }); 

,如果你希望提交日期chaneg然后再试这

$("#SelectedMonth").change(function() { 
      $('form').trigger('submit'); 
     }); 

    $('form').submit(function (event) { 
      event.preventDefault(); 
    alert("Submitted"); 
      }); 
0

回答这个问题:“为什么它不工作”是.submit(函数(){})实际上没有提交形成但增加submit handler - 当表单将提交

This method is a shortcut for .on("submit", handler) in the first variation, and .trigger("submit") in the third.

Description: Bind an event handler to the "submit" JavaScript event, or trigger that event on an element.

将要执行的功能

所以如果你传递函数给它,它会绑定处理程序。当你不用params触发它时,它实际上会提交表单。

你不需要按钮来提交表单。

所以实际的代码必须是这样的

$('form').submit(function (event) { 
    alert("Submitted"); 
    event.preventDefault(); 
}); 
$("#SelectedMonth").change(function() { 
    $('form').submit(); 
});