让Javascript函数正常工作时遇到问题

让Javascript函数正常工作时遇到问题,javascript,c#,asp.net,razor,model-view-controller,Javascript,C#,Asp.net,Razor,Model View Controller,原来,;我有一个按钮试图调用函数,但嵌套在表单中,默认情况下,该按钮将触发提交表单事件: 建议是添加一个 到按钮标签,我就能够克服我原来的问题 我的新问题是: 我有这些按钮: 我想让这些按钮触发日期字段是否隐藏 else if (question.Expected_Answer_Type == "Date") { <input type="button" value="Add a Date @ViewBag.QuestionID" onclick="makeDateVis

原来,;我有一个按钮试图调用函数,但嵌套在表单中,默认情况下,该按钮将触发提交表单事件: 建议是添加一个 到按钮标签,我就能够克服我原来的问题

我的新问题是:

我有这些按钮:

我想让这些按钮触发日期字段是否隐藏

    else if (question.Expected_Answer_Type == "Date")
{
    <input type="button" value="Add a Date @ViewBag.QuestionID" onclick="makeDateVisible(#@ViewBag.QuestionID)">

    @Html.TextBoxFor(m => m.QuestionnaireAnswers[i].Answer, Model.Date.ToString("M/d/yyyy"), new { @class = "form-control date hidden", @id = ViewBag.QuestionID }) if (Model.QuestionnaireAnswers == null)

    {
        <script>
            $(document).ready(function () {
                    $('#@(ViewBag.QuestionID)')
                        .val("@(DateTime.Today.ToShortDateString())");
                }

            );
            function makeDateVisible(@ViewBag.QuestionID) {
                alert("Hello");
            } 

        </script>
    }
}
else if(question.Expected\u Answer\u Type==“Date”)
{
@Html.TextBoxFor(m=>m.QuestionnaireAnswers[i]。答案,Model.Date.ToString(“m/d/yyyy”),新的{@class=“form control Date hidden”,@id=ViewBag.QuestionID})如果(Model.QuestionnaireAnswers==null)
{
$(文档).ready(函数(){
$(“#@(ViewBag.QuestionID)”)
.val(@(DateTime.Today.ToShortDateString());
}
);
函数makeDateVisible(@ViewBag.QuestionID){
警惕(“你好”);
} 
}
}
我似乎无法在makeDateVisible中触发警报

在浏览器内部。。。。 我得到一个错误: 未捕获的语法错误:无效或意外标记 红线出现在这一行的末尾:

  <input type="button" value="Add a Date @ViewBag.QuestionID" onclick="makeDateVisible(#@ViewBag.QuestionID)">

使用输入标记代替按钮标记,并在标记中添加type=“Button”,这将解决您的问题。我链接了一个网站以供参考

您应该在引号中传递#@ViewBag.QuestionID,然后它将被视为字符串参数


否则,它将被视为变量,从而生成错误。

我认为表单中的按钮天生就是提交的。您可以在每个
按钮
元素上使用
event.preventDefault
,也可以简单地更改标记并将
按钮
标记替换为
输入
标记,并将
类型
按钮
添加type=“button”添加到按钮中。它们不需要成为这项工作的输入。这应该可以防止zfrisch解释的行为。我已经更新了问题。。。如果您能让我知道您对这里发生的事情的看法,我很高兴将此标记为公认的答案。:)