如何在Javascript中使用(Html.BeginForm())调用@using
已更新如何在Javascript中使用(Html.BeginForm())调用@using,javascript,jquery,asp.net,asp.net-mvc,timer,Javascript,Jquery,Asp.net,Asp.net Mvc,Timer,已更新 试图让计时器自动点击提交按钮并转到下一页。有一个控制器为测验打分,所以我需要使用下面使用的@using htmlBeginForm。计时器 <div class="row"> <div class="col-md-offset-1"> <section id="questionForm"> <h2>Questions</h2> <form name="counter">
试图让计时器自动点击提交按钮并转到下一页。有一个控制器为测验打分,所以我需要使用下面使用的@using htmlBeginForm。计时器
<div class="row">
<div class="col-md-offset-1">
<section id="questionForm">
<h2>Questions</h2>
<form name="counter">
<input type="text" size="8"
name="d2">
</form>
<script type="text/javascript">
var minutes = 1
var seconds = 00
document.counter.d2.value = '30:00'
function display()
{
if (seconds <= 0)
{
minutes -= 1
seconds += 59
}
if (minutes <= -1)
{
function nextQuestion() {
$("#questionform").trigger("submit");
}
$(document).ready(function () {
setTimeout(function () { nextQuestion() }, 5000);
});
}
else
seconds -= 1
document.counter.d2.value = minutes + ":" + seconds
setTimeout("display()", 1000)
}
display()
</script>
@using (Html.BeginForm("Index", "Questions", FormMethod.Post, new { @id = "questionform" }))
{
@Html.EditorFor(x => x.Questions)
<input type="submit" id="submit" class="btn btn-default" value="Submit" />
}
</section>
</div>
问题
var分钟=1
var秒=00
document.counter.d2.value='30:00'
函数显示()
{
如果(秒)您似乎要在给定时间后提交表单。为此,您可以使用setTimeout
功能
@使用htmlBeginForm
是创建表单
标记的Razor语法,最后在呈现的视图
中会有相同的表单
标记。您可以使用下面的代码给出自己的ID
@using (Html.BeginForm("actionName", "controllerName", FormMethod.Post, new { @id = "questionform" }))
既然您添加了jQuery
标记,我假设您可以使用jQuery
并尝试下面的JavaScript代码
我假设您的布局页面有jQuery和脚本部分,如下所示
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
</body>
</html>
@Scripts.Render(“~/bundles/jquery”)
@RenderSection(“脚本”,必需:false)
那么你的观点应该如下
<div class="col-md-offset-1">
<section id="questionForm">
<h2>Questions</h2>
<div id='countdown'></div>
@using (Html.BeginForm("Index", "Questions", FormMethod.Post, new { @id = "questionform" }))
{
@Html.EditorFor(x => x.Questions)
<input type="submit" id="submit" class="btn btn-default" value="Submit" />
}
</section>
</div>
@section Scripts {
<script type="text/javascript">
$(document).ready(function() {
countdown('countdown');
});
function countdown(element) {
var interval;
var minutes = 1;
var seconds = 30;
interval = setInterval(function() {
var el = document.getElementById(element);
if(seconds == 0) {
if(minutes == 0) {
el.innerHTML = "Time's Up!";
clearInterval(interval);
$("#questionform").trigger("submit");
return;
} else {
minutes--;
seconds = 60;
}
}
el.innerHTML = minutes + ' : ' + seconds;
seconds--;
}, 1000);
}
</script>
}
问题
@使用(Html.BeginForm(“Index”,“Questions”,FormMethod.Post,new{@id=“questionform”}))
{
@EditorFor(x=>x.Questions)
}
@节脚本{
$(文档).ready(函数(){
倒计时(“倒计时”);
});
函数倒计时(元素){
var区间;
var分钟=1;
var秒=30;
间隔=设置间隔(函数(){
var el=document.getElementById(元素);
如果(秒==0){
如果(分钟==0){
el.innerHTML=“时间到了!”;
间隔时间;
$(“#问题表格”)。触发(“提交”);
返回;
}否则{
分钟--;
秒=60;
}
}
el.innerHTML=分钟+':'+秒;
秒--;
}, 1000);
}
}
如果我实现了这段代码,那么我就不会得到显示在页面上的计时器。你知道为什么吗?这是因为它不是以某种形式出现的吗?你是否完全尝试了我在回答中提到的内容?请查看JSFIDLE示例。这确实有效,但不一定是我所需要的。我必须使用(Html.BeginForm(“Index”,“Questions”),FormMethod.Post,new{@id=“questionform”}{@Html.EditorFor(x=>x.Questions)}我必须使用它,因为它会到达一个可以给测验打分的位置,你可以将它保存在你的视图中,它是否可以像我在回答中提到的那样使用Html.BeginForm
?