2014-01-27 4 views
1

В настоящее время я создаю приложение для хранения Windows 8.1 с использованием html5, bing-карт, javascript, phonegap & jquery.Диалоговое окно подтверждения Javascript в Windows 8.1 Store App

У меня есть кнопка в мое приложение, которое при нажатии вызывает следующую функцию

function resetFields() { 
    var svar; 
    var tryk = confirm("Are you sure!"); 
    if (tryk === true) { 
     svar = "You pressed OK!"; 
    } else { 
     svar = "You pressed Cancel!"; 
    } 
    alert(svar); 
} 

Функция называется тонкой, и я вижу диалоговое окно подтверждения, как можно было бы ожидать. Однако, независимо от того, какая кнопка нажата, результат одинаков - диалог реагирует так, как будто нажата кнопка «отменить».

Я пробовал if (tryk === true) и if (tryk == true), но результат тот же.

Что мне не хватает?

Даже alert(confirm("Are you sure!")) возвращает «undefined», поэтому я считаю, что мой ответ лежит глубже базового кода.

+0

Что значит 'alert (tryk)' дать вам, похоже, что оно возвращает что-то еще, кроме логического значения, или по какой-то причине всегда возвращает false. –

+0

'alert (tryk)' дает 'undefined' –

+0

Попробуйте ввести некоторые операторы журнала в блок 'if else' и посмотреть, действительно ли диалог подтверждения отвечает на события' yes/no'. –

ответ

2

я просто переживает некоторые документы PhoneGap и потому, что она построена вокруг html5 и JavaScript с поддержкой JQuery, она имеет тенденцию к чрезмерной езды определенных элементов, которые мы обычно видим в браузере чтобы использовать собственные элементы устройства, такие как диалог подтверждения.

От Notification confirm api docs:

Функция notification.confirm отображает родное диалоговое окно, которое более настраиваемый, чем функции подтверждающим браузера.

Теперь, я думаю, что переменная tryk неопределенна, вероятно, потому, что запрос возвращает немедленно, как только любая кнопка нажата в диалоге подтверждающего, и именно поэтому вы не можете правильно использовать функции обработчика.

В АНИ документы, они дали быстрый пример, который выглядит как:

// process the confirmation dialog result 
function onConfirm(button) { 
    alert('You selected button ' + button); 
} 

// Show a custom confirmation dialog 
// 
function showConfirm() { 
    navigator.notification.confirm(
    'You are the winner!', // message 
    onConfirm,    // callback to invoke with index of button pressed 
    'Game Over',   // title 
    'Restart,Exit'   // buttonLabels 
    ); 
} 

И метод showConfirm() может быть вызван из любого элемента HTML, как так:

<a href="#" onclick="showConfirm(); return false;">Show Confirm</a> 

Так что я думаю, вы должны придерживаться реализации, которую они официально предоставили. Я просто наткнулся на другой номер SO Question, где говорится, что PhoneGap подтверждает, что фактически выполняет асинхронный обратный вызов.

+0

Спасибо, что отлично работал. Кроме того, спасибо за ссылку на исходный пост, чтобы я мог продвинуться. –

1

Попробуйте

<html> 
<head> 
<script> 

function Fields1(){ 
    var svar; 
    var tryk = confirm("Are you sure!"); 
    if (tryk === true) { 
     svar = "You pressed OK!"; 
     } else { 
     svar = "You pressed Cancel!"; 
    } 
    alert(svar); 
} 

</script> 
</head> 
<body> 
<button onclick='Fields1()'>Hai</button> 
</body> 
</html> 
+0

Это не имело значения, но спасибо –

+0

Могу ли я узнать причину голосования? –

+0

Да, вы можете. Это была ошибка. –

Смежные вопросы