如何使用jQuery在@ Html.BeginForm中选择元素?

时间:2016-10-07 22:39:10

标签: jquery asp.net-mvc

我正在开发一个ASP.NET MVC C#应用程序,我正在尝试编写一个简单的单击事件,该事件会在单击表单中的提交按钮时触发。

问题是$('。class')选择器似乎对我的@ Html.BeginForm(yada yada yada){}子句中的所有内容视而不见。

$(document).ready()中的警报将会触发,因此我知道jQuery已加载并正常工作,但$('。myButton')中的警报.Click()将不会触发。

这是我的.cshtml

@using (Html.BeginForm("ManageProducts", "Admin", FormMethod.Post, new { id = "productForm" }))
{
...
<input type="submit" value="Update" class="add btn btn-default" />
}

这是我的jQuery

@section Scripts{
<script>
    $(document).ready(function () {
        $('.add').click(function (e) {
            alert('Hi');
            $('input:text').val('');
        });
    });
</script>

}

我尝试过的事情:

  • 在表单外放一个按钮,警告解雇
  • $('#productForm .add')。点击(...),警报仍然无法触发
  • $('input:button')。点击(...),警报仍然不会触发
  • $('#productForm')。find('。add')。click(...),alert仍然不会触发
  • 用Google搜索了大约两个小时,警报仍然没有开火:(

很抱歉,如果这似乎是重复的,但即使我实际上找到了几个同样问题的帖子,“正确”答案总是上面列表中的第2或第4项,但那些不修复我的问题。

感谢您的任何意见!

1 个答案:

答案 0 :(得分:0)

就像现在一样,当点击该输入时,如果触发jquery,表单将尝试提交到Admin控制器的ManageProducts操作。一个选项是在提交而不是控制器操作上触发逻辑。像这样:

@using (Html.BeginForm(new { onsubmit = "return alertStuff();" }))

<script type="text/javascript">
    function alertStuff() {
        alert('Hi');
    }
</script>

我也很幸运使用了jquery的on submit函数。这样的事情之前对我有用:

<script type="text/javascript">
    $(function() {
        $("#productForm").on("submit", function () {
            alert('Hi');
            if (youDontWantToSubmitForm) {
                return false;
            }
        });
    });
</script>