Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中使用(Html.BeginForm())调用@using_Javascript_Jquery_Asp.net_Asp.net Mvc_Timer - Fatal编程技术网

如何在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