不知道这里发生了什么......但是假设用户输入他们的 PIN 并点击 GO 按钮,当 PIN 无效时执行以下代码:
navigator.notification.alert(
"Invalid PIN entry. Please try again.",
alertDismissed,
"ETA Security",
""
);
function alertDismissed(){
//does nothing
}
这是第一次工作(并且只要我不离开并返回就重复)......但是当我在页面之间导航时(jquery mobile:一切都在一个页面上[index.html])并回来输入另一个PIN。 ..我再次调用navigator.notification.alert,但这一次,它显示了4次警报(5、6,每次我返回页面,它都会添加另一个警报)!
有任何想法吗?
**
编辑- 添加了完整的示例
** 用户单击使用 ajax 的链接进入数据库,该数据库返回包含列表的 json 对象。
数据库调用是一个ajax调用:
$.ajax({
cache: false,
type: "POST",
url: "my url telling the database to return the FIF list JSON object",
data: sFrmData,
success: function(ajaxResponse){
eval(ajaxResponse);
wait(0);
}
});
ajax 调用返回:
getFifs({"rows":[
{
"ID":"12345",
"CONF":"1",
"LINK":"http://www.cnn.com",
"DIS":"My FIF",
"CONFIRM_CODE":"flightxyz",
"DESCRIP":"Fif showing blah blah blah"
}
]}
);
在 getFifs 函数中,下方的 CONFIRM BUTTON 区域是调用警报的位置 (etajs.showAlert(\'Confirm Error\'...)
//Build the list of FIFs
function getFifs(oJson){
//change JQM page to fifs
$.mobile.changePage("#fifs", "none", false, true);
var strLi=" ";
var arrayCnt=0;
var numTotal=0;
$("#listFif").empty();
strLi+='<ul data-role="listview" data-inset="true" data-theme="d">';
$.each(oJson.rows,function(){
numTotal++;
var disname=this.DIS;
var fifid=this.ID;
var fiflink=this.LINK;
var descrip=this.DESCRIP;
var conf=this.CONF;
strLi+='<li><font size=5>' + disname + '</font><br>';
//******************************************
//CONFIRM BUTTON
strLi+='<div data-mini="true" data-role="controlgroup" data-type="horizontal">';
strLi+='<a href="#fifCode" onclick="if(fifViewArray['+arrayCnt+']==1){etajs.setIdHolder('+fifid+');"}else{etajs.showAlert(\'Confirm Error\',\'You must first View the FIF before confirming it!\',etajs.alertDismissed);";} ';
strLi+='data-rel="dialog" data-theme="c" data-role="button">Confirm</a>';
strLi+='</div>';
strLi+='<div style="white-space:normal;">Description:<font color=gray> ' + descrip + '</font></div>';
strLi+='</li>';
}); //end loop
strLi+='</ul><Br><Br>';
$("#listFif").append(strLi).trigger("create");
updateScrolling("wrapperFifs");
}
function showAlert(strTitle,strMessage,strCallback){
navigator.notification.alert(
strMessage, // message
strCallback, // callback to invoke with index of button pressed
strTitle, // title
'' // buttonLabels
);
}
</SCRIPT>
<!--FIFs Page-->
<div id="fifs" data-role="page">
<div id="wrapperFifs" class="iscroll_wrapper" style="padding-top:0px;">
<div class="scroller" id="listFif"></div>
</div>
</div>