0

mvc34 カミソリ ビューの送信ボタンで問題に直面しました。jQuery で行データを db に挿入するための送信ボタンを 1 つ含む webgrid に動的に行を追加しました。空のポップアップの場合、行のテキスト ボックスを検証したいです。アラートを出してアクションを停止します。このように書こうとしたとき、

$('#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

私はこのような解決策を見つけました

<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 に答える
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 live eventを使用する必要があります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 に答える