奇怪的形式行为

时间:2013-01-23 22:28:57

标签: jquery

我有一些疯狂的麻烦,我无法弄清楚如何解决它。我有一个表单,其中包含" return submitNotes"在提交按钮(onclick)上。我有submitNotes函数,它似乎正在调用它,但在我的函数中,我有一个似乎没有启动的ajax调用。我已经在ajax调用中设置了警报,当它完成时,好奇的是当我在页面底部返回false时警报才会消失。如果我评论退货,它甚至不会显示警报。在这两种情况下,ajax呼叫似乎都没有触及它的页面。你们可以做些什么来帮忙!

function submitNotes(rID){

    ts = getTs(); //this is so IE sees a unique URL being called everytime.
    var consignor = $('#consignor').val()
    var consignee = $('#consignee').val();
    var consignorRequired = $('#consignorRequired').val();

    if(consignorRequired=='true'){

            if(consignor==''){
                alert('Consignor information is required!');
                return false;
            }

            if(consignee==''){
                alert('Consignee information is required!');
                return false;
            }
    }

    $('#loading_notes').show();

    $.get('/scripts/claim_sendTo.asp?action=pending&rID='+rID+'&auditorID=1',function(){
        alert('hello2');
        $('#claimForm').submit();
    });

    //return false;

}

2 个答案:

答案 0 :(得分:0)

您可能想要尝试的是阻止事件的默认行为。

您可能希望在表单上使用onsubmit =“”而不是onclick =“”,因为这样您就可以停止在核心提交表单。

然后,您将要将事件对象传递给提交函数。它允许更好地控制事件,而不必过多依赖返回值。

<form method="post" action="X" onsubmit="submitNotes(event)">

// Somewhere in your JavaScript
function submitNotes(event) {
    if (event.preventDefault) event.preventDefault();
    else window.event.cancelBubble = true;
    // the rest of the event code
}

这应该是一个好的开始。

如果您想坚持使用onclick事件,可能需要尝试以下操作:

<form method="post" action="X" onsubmit="if (event.stopPropagation) event.stopPropagation(); else window.event.cancelBubble = true">

这应该阻止表单处理提交。

我可以建议您使用jQuery的$('form').submit( ... )事件处理吗?

答案 1 :(得分:0)

当您取消注释return false时警报会消失,因为您处于onsubmit事件的上下文中。从该事件返回false会取消它,允许您的jquery执行。否则,表单会重新加载页面