2016-03-14 30 views
0

使用 - HTML,JavaScript,JQueryMobile,Phonegap。 (一頁架構,所有頁面在一個HTML頁面上)如何確保Else語句保留在同一個html頁面上?

我有一個if/else語句用於用戶登錄,所以if語句將用戶導向主頁(如果在數據庫中找到用戶/ pass)非常好,但是我現在有一個else語句的通知,但問題是,在通知之後,它將用戶重定向回索引頁,而不是保留在同一頁上,並允許用戶再次嘗試。

我可以使用什麼來防止頁面被重新加載到else語句的另一個頁面?我已經嘗試過event.preventDefault();和event.stopPropagation();但我只是得到一個錯誤。

見下面我當前的代碼 -

function loginUser() 
{ 
    db = window.openDatabase("SoccerEarth", "2.0", "SoccerEarthDB", 2*1024*1024); 
    db.transaction(loginDB, errorCB); 
} 

function loginDB(tx) 
{ 
    var Username = document.getElementById("username").value; 
    var Password = document.getElementById("password").value; 
    tx.executeSql("SELECT * FROM SoccerEarth WHERE UserName='" + Username + "' AND Password= '" + Password + "'", [], renderList); 
} 

function renderList(tx,results) 
{ 
    if (results.rows.length > 0) { 
     navigator.notification.alert("Login Success!"); 
     window.location = "#page4"; 
    } 
    else 
    { 
     event.preventDefault(); 
     event.stopPropagation(); 
     /* navigator.notification.alert("Incorrect! Please try again. "); */ 
    } 
} 
+1

尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –

+0

這裏的事件對象在哪裏? – user3613129

+0

在你的'else'中沒有任何重定向頁面,也沒有定義的事件變量(至少在這個片段中)。也許這是你的'

'標籤,但你分享的代碼是不可能看到問題的。問一個正確的問題,首先閱讀我在最新評論中附加的鏈接。祝你好運! –

回答

1
function renderList(event, tx, results) { 
     if (results.rows.length > 0) { 
      window.location = "#page4"; 
     } else { 
      event.preventDefault(); 
      event.stopPropagation(); 
      /* navigator.notification.alert("Incorrect! Please try again. "); */ 
     } 

您需要通過事件作爲arguement。然後通過使用event.preventDefault()來防止它的默認行爲。

但是我想指出,您在這裏沒有使用事件,只是檢查頁面上是否有內容。

+0

我已更新代碼以顯示完整的功能。基本上,if結果在用戶被引導到#page4的時候效果很好,但是當用戶輸入了不正確的用戶/密碼時觸發了其他內容,因此用戶應該留在頁面上再次嘗試用戶/密碼。問題是當else被觸發時,它會在我的代碼中顯示註釋掉的警報,然後將用戶帶回索引頁面,而不是保留在登錄頁面上。你看到問題了嗎? – Mahdi

+0

我使用event.prevenetDefault()的原因;是因爲我認爲它可能會阻止頁面將用戶重定向回索引頁面。 – Mahdi

相關問題