2011-08-30 3 views
1

다음 콜백이 코드를 실행하지 않는 이유는 누구나 알 수 있습니까? 어떤 이유에서든 fadeTo 바로 뒤에 페이지라는 window.onload 스크립트 (유일한 것)가 있습니다.콜백 함수 후 예기치 않은 페이지 새로 고침

$("#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); 
     } 
    } 
}); 

위 함수는 메인 페이지에 .HTMLonclick 이벤트에서 호출된다.

편집 - 의견

에 요청 코드 이것은 버튼 주위의 HTML과의 onclick 질문입니다. 위의 함수 인 makenewitem 함수 에 대한 호출입니다.

기능 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"; 

} 당신은 당신이 방법의 끝에서 return false;을 시도 할 수

+0

'processnewentry'의 구조가 문제를 디버그하는 데 필요합니다. – diEcho

+0

팁 :'else {return false; }'if (verify) {} '와 함께 – diEcho

+0

이 질문에 대한 답변은 관련 코드의 나머지가 공개 될 때까지 야생 추측을 필요로합니다. 여기에는 클릭 핸들러, 클릭 핸들러 (및 그 주변) 및 processnewentry 함수와 연관된 HTML이 포함됩니다. 여기에 정보가 충분하지 않아 단순히 아무 것도하지 않고 추측 할 수 있습니다. – jfriend00

답변

6

onclick이 제출 버튼 또는 태그에 있으면 그 태그와 관련이있을 수 있습니다.

이 같은, 당신의 버튼의 onclick 호출에 잘못된 수익을 추가해야합니다 :

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

이 발생하는 (제출하다) 기본 버튼 동작을 방지 할 수 있습니다.

+0

답변 해 주셔서 감사합니다. onclick은 버튼 요소에 있으므로 포인트가 잘 잡히게됩니다. 나는 거짓으로 돌아가려고 노력했지만 도움이되지 않는 것처럼 틀린 자리에 배치해야합니다. 콜백 내의 코드는 주 페이지를 다시로드하기 전에는 전혀 실행되지 않습니다. –

+0

답변에 false를 반환하는 예제를 추가했습니다. 이게 도움이 되나요? –

+0

또한, 사이드 노트에서 콜백에 false를 추가하면 아무 것도하지 않습니다. 버튼을 클릭하면 즉시 재로드가 트리거되기 때문입니다. 따라서 fadeTo 함수는 (거의) 완료 할 시간이 없으므로 사용자가 제공 한 콜백 함수를 호출 할 수 없습니다. –

0

:

<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 기능입니다.