フォームのあるページがあります。送信ボタンをトリガーする関数を呼び出す window.setTimeout があります。タイムアウトは 10 秒に設定されています。ただし、時間が経過した場合、関数は呼び出されますが、フォームは送信されません。送信ボタンがフォームを送信していないようです。この機能を機能させる方法を教えてください。関数「SubmitForm」が呼び出された場合、送信ボタンをクリックせずにボタンを送信する必要があります。以下は私のコードです。
HTML
@model MVCViewState.Models.Product
<!DOCTYPE html>
<html>
<head>
<title>Create</title>
<script type="text/javascript">
window.setTimeout(SubmitForm, 10000);
function SubmitForm() {
alert('called');
$('#btnSubmit').submit();
}
</script>
</head>
<body>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm("Create", "Products", FormMethod.Post, new { id = "ProductForm" }))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Product</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>
<p>
<input type="submit" value="Create" id="btnSubmit"/>
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
</body>
</html>
コントローラ
// // POST: /Products/Create
[HttpPost]
public ActionResult Create(Product product)
{
try
{
List<Product> products;
if (Session["products"] != null) products = Session["products"] as List<Product>;
else products = new List<Product>();
if (products != null) products.Add(product);
product.Id = products.Max(x => x.Id) + 1;
Session["products"] = products;
return RedirectToAction("Index");
}
catch
{
return View();
}
}