2011-08-30 39 views
1

有没有人有任何想法为什么下面的回调不执行代码内?我有一个window.onload脚本(唯一一个)在我的主.html页面中,由于某种原因,在fadeTo之后立即被调用。回调函数后意外页面刷新

$("#newentryform").fadeTo("fast", .25, function() { 
    var newentry = prompt("Please enter a new item:", ""); 
    if ((newentry != null) && (newentry != "")) { 
     var verify = confirm("Press 'OK' to confirm you wish to create a new entry:" + "\n" + newentry); 
     if (verify == true) { 
      processnewentry(newentry, dropid); 
     } 
    } 
}); 

上述功能是由在主.HTML页的onclick事件调用。

编辑 - 在注释中

请求的代码。这是按钮周围的HTML和的onclick问题。该电话是上述功能的新功能功能 。

<div id="entryinput"> 
<p>Item<input type="text" id="createitem" readonly /><button id="createitembutton"onClick="showbuttons(this.id)">Select...</button><button id="createnewitembutton" onClick="makenewitem(this.id)">+ New</button><button id="itemReset" onClick="resetbuttons(this.id)">Reset</button> 
<input type="text" id="createitemval" style="display:none" readonly/> 
<input type="text" id="createitemindex" style="display:none" readonly/> 
</p> 
</div> 

这是processnewentry功能:

功能processnewentry(newentryvalue,dropid) {

if (dropid=="createnewitembutton") 
{ 
    dropid="createitem"; 
} 

    else 
{ 
      dropid="olditem"; 
} 

var createnewItm=document.getElementById(dropid); 
    createnewItm.value=newitemvalue; 
var createnewitemval=document.getElementById(dropid+"val"); 
    createnewitemval.value=""; 
var createnewitemindex=document.getElementById(dropid+"index"); 
    createnewitemindex.value="1"; 


     $("#newitemform").fadeTo("fast", 1); 

     var currentPage="newitembuttonpressed"; 
     toggleStatus(currentPage); //disable inputs and buttons in form 


    var hidebutton=document.getElementById(dropid+"button").style.display="none"; 
    var subdropid=dropid.substr(6); 
    var hidenewbutton=document.getElementById("createnew"+subdropid+"button").style.display="none"; 
    var displaycreateinput=document.getElementById(dropid).style.display="inline"; 

}

+0

'processnewentry'的结构需要调试你的问题 – diEcho

+0

提示:写'else {return false; }'with'if(verify){}' – diEcho

+0

对这个问题的回答需要很长的猜测,直到其他相关代码被披露。这包括点击处理程序,与点击处理程序相关的HTML(及其周围)以及processnewentry函数。这里根本没有足够的信息做任何事情,只能猜测。 – jfriend00

回答

6

如果您的onclick被放置在提交按钮或标签上,这可能与它有关。

您应该添加返回false,您的按钮的onclick调用,就像这样:

<button [...] onClick="showbuttons(this.id); return false;" /> 

这样可以防止默认按钮的动作(这是提交)发生。

+0

感谢您的回复。 onclick在按钮元素上,所以你的观点很好。我试图回复错误,但必须把它放在错误的地方,因为它似乎没有帮助。回调中的代码在重新加载主页之前根本不会执行。 –

+0

我添加了一个返回false到我的答案的例子。这有帮助吗? –

+0

此外,在旁注中,向回调添加return false将不起作用,因为单击按钮将立即触发重新加载。所以fadeTo函数将(几乎)永远没有时间完成,因此将无法调用您提供的回调函数。 –

0

你可以在你的方法结束尝试return false;