0

2つのテキストボックスとメールを保存するためのボタンがあるMVCかみそりのフォームがあります。onclickイベントで送信ボタンを使用すると、ブラウザでクリックすると、メールのテキストボックスが空かどうかがチェックされ、MVCモデルに検証エラーが表示されますが、テキストボックスに入力して送信ボタンをクリックしても表示されませんSaveEmailForNewsletter()関数に移動し、ページを更新します。

       <input type="submit" id="submitBtn" value="send" onclick="javascript:SaveEmailForNewsletter();" class="ButtonStyle"/>

$("#myform").submit(
    function SaveEmailForNewsletter(e) {
    e.PreventDefault();
        var newsLetter = { Email: $("#Email").val(),Name:$("#Name").val(), LanguageId: "1" };
        $.ajax({
            url: '/Newsletter/Index',
            type: 'POST',
            dataType: 'json',
            data: JSON.stringify(newsLetter),
            contentType: 'application/json; charset=utf-8',
            success: function (result) {
                if (result.success) {
                    // We have a JSON object in case of success
                    alert('register successfuly!');
                    $('#Email').val("");
                    $("#Name").val("");
                } else {
                    // We have the partial with errors in case of failure
                    // so all we have to do is update the DOM
                    alert('This email registered previosly.');
                    $("#Email").val("");
                    $("#Name").val("");    
                 }
               }
             });
            });

onclickを次のように変更しました:

OnClick="return SaveEmailForNewsletter();"

動作しません。どちらの方法でも、このエラーが表示されます。

「javascriptが定義されていません」または「returnSaveEmailForNewsletter()が定義されていません」

ブラウザで「type=button」とonclickイベントを使用して入力を使用すると、「send button」をクリックしても、空のテキストボックスがチェックされず、エラーも表示されません。私がfirebugのコンソールを見るとき、それは何もせずにただ投稿します。

  <input type="button" id="submitBtn" value="send" 
       onclick="SaveEmailForNewsletter();" class="ButtonStyle"/>


    function SaveEmailForNewsletter() {    
    //Code above
       });

テキストボックスをチェックしたいのですが、空の場合はモデル状態の検証エラーが表示され、関数に移動して実行し、アラートが表示されます。私は何をすべきか?ありがとう..

4

1 に答える 1

0

さわやかなあなたの問題はあなたと関係があります<form>。あなたはaを使用し<form>て送信し、実際の送信を上書きしています。ただし、現在そうしているとは思わない場合を除きます。より良いオプションは、通常のボタンを使用することです。

また、JavaScriptファイル内のイベントの配線を維持するようにしてください。これがないと、マークアップがはるかにクリーンになります。

JSFiddleの例を参照してください

$(document).ready(function () {
    $('#submitBtn').click(saveEmailForNewsletter);
});

function saveEmailForNewsletter() {
    alert('I\'m here!');
}

EDIT2:

$( "#myform")。submit()関数から関数を引き出して、「グローバル名前空間」に配置しようとしています。

JSFiddle

$("#submitBtn").click(SaveEmailForNewsletter);

function SaveEmailForNewsletter(e) {

    // Use lowercase on preventDefault()
    e.preventDefault();

    var newsLetter = {
        Email: $("#Email").val(),
        Name: $("#Name").val(),
        LanguageId: "1"
    };
    $.ajax({
        url: '/Newsletter/Index',
        type: 'POST',
        dataType: 'json',
        data: JSON.stringify(newsLetter),
        contentType: 'application/json; charset=utf-8',
        success: function (result) {
            if (result.success) {
                // We have a JSON object in case of success
                alert('register successfuly!');
                $('#Email').val("");
                $("#Name").val("");
            } else {
                // We have the partial with errors in case of failure
                // so all we have to do is update the DOM
                alert('This email registered previosly.');
                $("#Email").val("");
                $("#Name").val("");
            }
        }
    });

    // Will stop the submit
    return false;
}
于 2013-03-02T09:11:04.100 に答える