0

我在 mvc34 razor 视图中遇到了提交按钮的问题。我在 jQuery 中动态添加了一行到 webgrid,其中包含一个提交按钮,用于在 db 中插入行数据。如果弹出空,我想验证行的文本框发出警报并停止操作。当我试图这样写

$('#btnInsert').click(function()
{
 if ($('#tbStudentName').val() == '') {
               alert('Please enetre!');
                           return false;
            } 
});

这个事件在 jQuery 中根本没有触发。我们可以像上面那样在jQuery中调用动态创建的提交按钮客户端点击事件吗? 我是这样写的

function InsertClick(button) {
        if ($('#tbStudentName').val() == '') {
           alert('Please enetre!');
                       return false;
        }        
    }

但控制器端 FormAction 方法仍在触发。谁能告诉我防止服务器端动作的解决方案?

4

3 回答 3

0

您可以通过将事件绑定到表单本身来做到这一点。

$("form").submit(function(e) { e.PreventDefault(); return false; }

当然,您可以添加一些 if 语句以仅在某些情况下防止。

于 2012-11-21T07:28:20.303 回答
0

或者,您可以使用输入类型按钮,默认情况下不是表单提交的原因,如果验证成功,则通过

$(this).parents("form").submit();

这是示例:

<script type="text/javascript">
    $(function () {
        $(".go").click(function () {
            var wrong = true; //fake data
            if (wrong) {
                alert("your value is wrong");
            } else {
                $(this).parents("form").submit();
            }
        });
    });
</script>

@using(Html.BeginForm())
{

    @Html.TextBoxFor(x=>x.CompanyName)
    @Html.ValidationMessageFor(x=>x.CompanyName)
    <br/>

    <input type="button" value="go" class="go" />
}

更新

如果要动态添加按钮,则应使用 jquery实时事件Attach an event handler for all elements which match the current selector, now and in the future.

这是示例:

<script type="text/javascript">
    $(function () {
        $(".go").live("click", function () {
            var wrong = true; //fake data
            if (wrong) {
                alert("your value is wrong");
            } else {
                $(this).parents("form").submit();
            }
        });

        $(".add").click(function () {
            $("form:first").append("<input type='button' value='go' class='go' />");
        });

    });
</script>

@using(Html.BeginForm())
{

    @Html.TextBoxFor(x=>x.CompanyName)
    @Html.ValidationMessageFor(x=>x.CompanyName)
    <br/>


}


<a class="add" href="#">add button dinamically</a>
于 2012-11-21T07:46:08.883 回答
0

我找到了这样的解决方案

<input type="submit" value="Insert" onclick="return Validate(this);" />


function Validate(button){
if($('#tbemail').val()==''){
    alert('Can't be blank!');
    return 1==3;
}

}
于 2012-11-21T09:59:05.190 回答