javascript - 如何在 Javascript 中调用 @using (Html.BeginForm())

标签 javascript jquery asp.net asp.net-mvc timer

<--这是我想要的计时器-->已更新
尝试让计时器自动点击提交按钮并转到下一页。有一个 Controller 可以对测验进行评分,因此我需要使用下面使用的@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>

最佳答案

您似乎正在尝试在给定时间后提交表单。为此,您可以仅使用 setTimeout 函数。

@using htmlBeginForm 是用于创建 form 标记的 Razor 语法,最后您将在渲染中拥有相同的旧 form 标记查看。您可以使用下面的代码来提供您自己的 ID。

@using (Html.BeginForm("actionName", "controllerName", FormMethod.Post, new { @id = "questionform" }))

由于您添加了 jQuery 标签,我假设您可以使用 jQuery 并尝试以下 JavaScript 代码。

我假设您的布局页面有 jQuery 和 script 部分,如下所示。

        @Scripts.Render("~/bundles/jquery")
        @RenderSection("scripts", required: false)
    </body>
</html>

那么你的 View 应该如下所示。

<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>
}

JSFiddle Example

关于javascript - 如何在 Javascript 中调用 @using (Html.BeginForm()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25026062/

相关文章:

c# - IIS中回收应用程序池时,是否调用了Application_End?

javascript - 如何获取标签的类属性的第一个值?

javascript - 匹配密码

javascript - 直接用Jquery/Javascript编辑html文件

javascript - 使用 Javascript 更改 SVG 的颜色

asp.net - app_themes css 文件和版本号

javascript - 尝试查找以前的 DOM 元素并获取输入值 jquery

JavaScript Promises 混淆反模式?

javascript - RobinHerbots jquery.inputmask 日期范围

asp.net - 如何在 Azure 网站上禁用 SSL v 3.0