2
我想驗證表單,以便我可以檢查基本信息(例如輸入的用戶名,用戶名最小長度等),但也可以確保像用戶名和電子郵件的東西還沒有(這需要數據庫搜索)。
我擁有所有的作品,並且在玩過後縮小了範圍,發現$.post
聲明雖然是爲了添加到我的「失敗」計數器中,但並未這樣做。我如何從$.post
行獲得某種形式的輸出,以便我可以真正驗證(因爲現在即使用戶名不可用,它也會提交表單)。
這是我的<script>
(儘管爲了簡單起見,縮寫爲只顯示用戶名片)。請注意,「usernameoff」是我的錯誤塊:
function validateForm()
{
// set variables
var username=document.forms["registrationnew"]["username"].value;
var usernamespace=username.indexOf(" ");
// set fail counter variable to determine if any requirements failed
var counter=0;
// check that username isn't blank, containing spaces, too short, or taken
if (username==null || username=="")
{
counter++;
$('#usernameoff').html("Must enter a username");
}
else if (username.indexOf(" ") >= 0)
{
counter++;
$('#usernameoff').html("Cannot contain spaces");
}
else if (username.length < 3)
{
counter++;
$('#usernameoff').html("Must be at least three characters");
}
else
{
$.post("check_username.php", {username: username}, function(result)
{
if(result == 0)
{
$('#usernameoff').html("Available");
}
else
{
counter++;
$('#usernameoff').html("Not available");
}
});
}
// if any test failed, return false
if (counter > 0)
{
document.getElementById("errorflag").innerHTML=counter;
return false;
}
}
$.post
進行查詢,以確定是否輸入的用戶名已被佔用(並返回0或1)。我的問題是,無論它返回什麼,它都不會增加「計數器」,因此表單仍然提交。
太感謝你了,昨天這個問題害了我,我只是嘗試了一下這種方式取得成功。我正在編寫我的第一個網站(參加了一個學期的編碼課程並發現了錯誤),所以這是一個很大的學習經驗。再次感謝。 – cschippe