我想自动单击启用 Ajax 的表单的提交按钮,以便用户不必单击按钮(但可以选择)。
现在,我正在处理第一个边界,即从 Javascript 调用表单,这样至少,一旦我构建了我的计时器,我就会弄清楚这部分。
我已经尝试了很多方法来做到这一点,但没有任何工作。请记住,这是一个 ASP.NET MVC 4 移动应用程序(它使用 jquery.mobile),但我确实禁用了 jquery.mobile ajax,以便我的按钮可以正常工作(创建手动基于 ajax 的表单并更新 div,确实不适用于 jquery.mobile 应用程序,因为它挂钩所有 ajax 表单的提交)。
所以我当前的按钮工作正常,我似乎无法以编程方式触发它。
我有我的表格:
<% using (Ajax.BeginForm("SendLocation", null, new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "result", HttpMethod = "POST" }, new { @id = "locationForm" }))
{ %>
<ul data-role="listview" data-inset="true">
<li data-role="list-divider">Navigation</li>
<li><%: Html.ActionLink("About", "About", "Home")%></li>
<li><%: Html.ActionLink("Support", "Support", "Home")%></li>
<li data-role="list-divider">Location</li>
<%: Html.HiddenFor(model => model.GPSLongitude)%>
<%: Html.HiddenFor(model => model.GPSLatitude)%>
<li><input type="submit" id="submitButton" value="Send" /></li>
</ul>
<% } %>
我试图在javascript中做到这一点:
$.ajax({
type: "POST",
url: action,
success: function () {
alert('success');
}
});
而且我确实得到了通常会触发的服务器代码。但是,DIV 没有更新,而且模型也不是完整的(它存在时所有内部值都为 null,所以我假设是新实例化的)。
我还尝试了不同的方式来触发表单:
var form = $('#locationForm', $('#myForm'));
if (form == null) {
alert('could not find form');
} else {
alert('firigin on form');
form.submit(function (event) { eval($(this).attr("onsubmit")); return false; });
form.submit();
}
这也不起作用:
var f = $('#locationForm', $('#myForm'));
var action = f.attr("action");
var data = f.attr("data");
$.post(action, data, function() { alert('back'); });
这是我在网上找到的所有方法。
他们都没有工作来触发表单并让它像用户自己按下提交按钮一样正常工作。当然,一旦失败,如果我点击提交按钮,它就会完美运行......