2013-01-23 87 views
0

我有一些疯狂的麻烦,我无法弄清楚如何解决它。我有一个表单在提交按钮上有一个“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; 

} 
+0

为什么投票结束?关于这个问题,这太局部化了?这是一个很常见的问题,人们碰到 –

回答

0

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

+0

我将提交按钮更改为链接并在onclick上调用该函数,但它仍不会执行ajax调用。我有一个网页上的其他地方的电话,它在那里工作得很好。我甚至复制并粘贴了代码,但没有任何代码 – Damien

+0

除了取消注释'return false'语句之外,您不需要做任何其他操作。观察AJAX调用是否在Firebug的网络选项卡或IE开发工具网络选项卡中发布,或者使用fiddler。如果您看到警报“hello2”,意味着您的ajax呼叫熄灭了。 –

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(...)事件处理吗?

+0

它重新加载页面,但它确实进入了代码。如果我在load_notes.show之后放置警报,它会显示出来。它是在$ .get请求中它不起作用的时候。 – Damien