0

我在 mvc razor 中有一个表单,它有两个文本框和一个用于保存电子邮件的按钮。当我在浏览器中使用带有 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 未定义'或'返回 SaveEmailForNewsletter() 未定义'

当我在浏览器中使用带有“type = button”和onclick事件的输入时,通过单击“发送按钮”它不会检查空文本框并且不会显示任何错误。当我看到萤火虫的控制台时,它只是张贴没有任何东西。

  <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!');
}

编辑2:

尝试将您的函数从 $("#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 回答