Неожиданное обновление страницы после функции обратного вызова - PullRequest
1 голос
/ 30 августа 2011

Кто-нибудь знает, почему следующий обратный вызов не выполняет код внутри?У меня на главной странице .html есть скрипт window.onload (единственный), который по какой-то причине вызывается сразу после 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);
        }
    }
});

Вышеуказанная функция вызывается из события onclick на главной странице .HTML.

EDIT - код, запрошенный в комментариях

ЭтоHTML вокруг кнопки и onclick в вопросе.Вызов функции makenewitem, которая является функцией выше.

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

}

Ответы [ 2 ]

6 голосов
/ 30 августа 2011

Если ваш onclick размещен на кнопке отправки или теге, это может быть связано с этим.

Вы должны добавить return false к своим вызовам по нажатию кнопки, например:

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

Это предотвращает выполнение действия кнопки по умолчанию (отправка).

0 голосов
/ 30 августа 2011

Вы можете попробовать return false; в конце вашего метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...