2014-12-07 52 views
1

這可能有點奇怪的問題,但我有一些奇怪的情況。 基本上我已經有了一個帶有文本輸入的html頁面,這些輸入用於匹配某些輸入和SQL數據庫,但輸入必須首先檢查null。這是一種僅使用用戶名的模擬登錄系統。HTML - 使用JavaScript停止PHP腳本的輸入檢查

我的問題來自於我需要使用PHP僅用於數據庫查詢和值的傳遞,如文本字段中的內容。因此,我將表單設置爲以PHP作爲其操作,並創建了一個JavaScript文件,首先運行其代碼並檢查null。 JavaScript工作得很好,但在它返回的警報關閉後,PHP頁面被加載(它不包含任何代碼,因爲我需要首先解決這個問題)。

有誰知道我可以如何解決它,所以用戶被迫回到與PHP和javascripts重置頁面?我嘗試了一些嘗試重新加載頁面的JavaScript命令,但PHP仍然激活。我讀過AJAX可能可以處理這個問題,但是由於某種原因讓JQuery工作時遇到了很多麻煩。

對不起,真的很奇怪的問題,老實說,如果我可以使用PHP來做到這一點會很好。無論如何,感謝任何和所有的幫助,真的很感激!

JavaScript的:

function loginEmpty() { 
    var login = document.getElementById("profileName").innerHTML; 
    if (login==null || login=="") 
    { 
     alert("You did not enter a username"); 
     return false; 
    } 

} 

HTML:

<script src="YSP.js" type="text/javascript"></script> 
</head> 

<body> 

<div id="header"> 

<h1>You SHALL Pass!</h1> 

</div> 

<div id="navBar" class="mainScheme"> 

<!--Navbar content goes here--> 

</div> 

<div id="main" class ="mainScheme"> 

<h2>User Login</h2> 

<!--Old user login - name match from DB--> 
<form id="loginForm" action="You_Shall_Pass.php" method="post"> 
<fieldset> 
<legend>Log in to a profile</legend> 

<label for="profileName">User name: </label> 
<input id="profileName" name="profileName" type="text" /> 
<input type="submit" id="loginButton" name="loginButton" value="Log in!" onclick="loginEmpty();" /> 

</fieldset> 
</form> 

<!--New user login - Creates a new user in DB--> 
<form id="loginForm" action="You_Shall_Pass.php" method="post"> 
<fieldset> 
<legend>New user? Create a user name here!</legend> 

<label for="newProfileName">User name:</label> 
<input id="newProfileName" name="newProfileName" type="text" /> 
<input type="submit" id="createButton" name="createButton" value="Create!" onclick="newUserEmpty();" /> 

</fieldset> 
</form> 

</div> 


</body> 

</html> 

回答

2

當點擊的type="submit"形式內部的按鈕/輸入元件,所述形式包封該按鈕將做到窗體的action屬性的呼叫。如果你不希望發生這種情況,你可以使用一個<div>元素,並使用CSS來使它看起來像一個按鈕。當div被點擊時,表單將不會被提交。

如果你想JQuery的工作,包括以下兩行到你的頭標記

<script src="/path/to/scripts/jquery.js"></script> 
<script src="/path/to/scripts/yourjsfile.js"></script> 

替換您與<div id="SubmitButton"></div>提交按鈕。

那麼你的JavaScript文件裏面你把

$(function(){ // $ means JQuery, so its a shortcut for JQuery(document).ready() 

    $("#SubmitButton").click(function(){ 
    // function will run when SubmitButton is clicked 
    var DataIsValid = false; 

    if(/*Perform your checks here */) 
     DataIsValid = true; 

    //end function if checks failed 
    if(!DataIsValid) 
     return; 

    //perform an ajax call to send your data to the 
    //webserver where you can execute your PHP code 
    }); 

}); 
+0

我可以試試這個,但我不是100%肯定它是如何在我的情況下工作。我仍然需要將數據發送到php並運行我要編寫的函數。 div可以做到這一點,但事先打斷javascript函數,如果輸入爲空,則停止php函數? – Alzecha 2014-12-07 03:10:35

+0

確實如此。讓我爲你編輯我的答案。 – user1534664 2014-12-07 03:13:51

+0

非常有幫助,我會試試看。謝謝! – Alzecha 2014-12-07 03:23:32