Asp.net mvc 4 Html.begin中httppost之前的mvc 4 razor自定义客户端验证

Asp.net mvc 4 Html.begin中httppost之前的mvc 4 razor自定义客户端验证,asp.net-mvc-4,client-side,Asp.net Mvc 4,Client Side,在我看来,我正在使用ajax.beginform @using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post)) { <table> <tr> <td> <input type="text" id="txtCardNumber"> </td>

在我看来,我正在使用ajax.beginform

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post))
{
    <table>
        <tr>
            <td>
                <input type="text" id="txtCardNumber">
            </td>
            <td>
                <button id="Search"/>
            </td>
        </tr>
    </table>
}

如何进行自定义客户端验证并仅在客户端验证成功时转到服务器端。

live已被弃用。你的第一行应该是

$('#Search').on('click', function(event) {

还可以尝试从代码中删除return。

我更改了helper方法,以指定一个可以使用jQuery钩住的ID:

@using (@Html.BeginForm("ActionName","ControllerName",FormMethod.Post, new {id = "submitForm"}))
    {
     //...
    }
然后jQuery:

       $('#submitForm').submit(function () {
            return validateFields(self);//false stops POST, true continues POST
        });

如果调试脚本为“isvalid”,是否返回true?event.preventDefault()应该适用于您是的,当自定义验证通过时,它返回true。但是event.preventDefault()在true的情况下扰乱了它的正常HTTPPost操作。当你说messed up时,你是什么意思?在您的问题中,您说您无法使用正确的值访问服务器,它是否返回但不返回?我认为在这种情况下你不需要回油管。当你移除它们时,有什么变化吗?我把答案放回去,并添加了修复它的内容。如果你点击我答案旁边的复选标记,你会给我分数。很高兴它起作用了对不起,它不起作用了。它是重定向到服务器,并执行应该避免的服务器端处理。由于屏幕停止挂起,我假设它正在工作。当验证失败时,它只是挂在jquery上很长一段时间,并一直显示进度条,但不会转到服务器端,但如果验证通过,它将正常进行。如何避免上吊。它将进入jquery-1.8.3.js,并循环浏览各种内容,因此进度条不断显示。当我看到它来自jquery代码中的一个bug时。我看不到您发布的代码有任何问题。尝试删除代码片段,看看是否可以正常工作。例如,进度条。试着把它去掉,看看事情是否开始起作用。如果您发现某个区域存在问题,请发布代码,让我们看看是否可以修复它
       $('#submitForm').submit(function () {
            return validateFields(self);//false stops POST, true continues POST
        });