2

私の見解では 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>
}

検索ボタンをクリックすると、HTTPPost のコントローラーに直接移動する代わりに、最初にカード番号に対していくつかのクライアント側の検証を行いたいと考えています。そして、検証が失敗した場合、サーバー側に行きたくありません。だから私は return false をやってみましたが、瞬間的ではなく長時間ハングします。event.preventdefault を試しましたが、元に戻すことができず、モデル値を渡す適切な値でサーバー側に移動します。

$("#Search").button({.live("click", function (event) {
    var isvalid = SubmitValidations();
    if (isvalid) {        
 //show progress bar
        return true;
    } else {
        event.preventDefault(); 
        alert("Please correct the errors on the screen before proceeding.");
        return false;
    }
}); 

カスタム クライアント側検証を実行し、クライアント側検証が成功した場合にのみサーバー側に移動する方法。

4

2 に答える 2

0

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
        });
于 2014-05-16T20:27:50.667 に答える
0

ライブは廃止されました。あなたの最初の行は

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

また、コードから return を削除してみてください。

于 2013-10-16T22:14:10.303 に答える