JavaScript确认窗口在Safari for iPhone上始终返回false

时间:2014-01-01 17:41:14

标签: javascript iphone knockout.js mobile-safari

我正在使用Knockout.JS为表单供电,我有一个按钮,按下时会显示一个确认窗口。仅在Safari for iPhone上,它总是返回false。它适用于我的iPhone上的Chrome,在我的iPad和笔记本电脑上,它适用于所有浏览器(包括Safari)。也没有错误。

self.submitPayment = function(){
    var errors2 = ko.validation.group(secondValidationGroup);
    if (errors2().length == 0) {
        if(confirm_reservation() == true){
            finalizePayment(); //calls function which displays a new div
        }
        else{
            alert('False was returned'); //displays before I even make a selection
        }
    }
    else{
        errors2.showAllMessages();
    }
}

 //used to confirm submission for submitPayment 
function confirm_reservation(){
    var conf = confirm('Click OK to submit your payment');
    return conf;
}

在我做出选择之前,我得到'False was return'警告。所以基本上它甚至不让我在返回值之前做出选择。

编辑 - 现在正在运行,我想我可能遇到了一个错误

我在手机上清除了我的cookie /缓存并重新启动它然后继续正常工作。

3 个答案:

答案 0 :(得分:0)

我认为由于asycnhronus问题导致的问题,你的“confirm_reservation”方法不会等待确认结果,并直接返回false。你可以尝试下面用你的确认块更改。

confirm('Click OK to submit your payment', function(result) {
  if(result) {
    finalizePayment();
  } else {
    alert('False was returned'); //displays before I even make a selection
  }    
});

答案 1 :(得分:0)

您可以尝试:

if(confirm('Your question')) 
{ 
 // do things if OK
}
else
{
// do things if KO
}

答案 2 :(得分:0)

在AOZ建议它可能是一个错误后,我清除了我的cookie /缓存并重新启动了我的手机,然后它继续工作。我正在使用我的原始方法,现在它正常工作。