2013-10-05 56 views
0

我有一個JavaScript沒有正確檢查我的代碼的問題。我希望有人能告訴我在這種情況下具體發生了什麼。我想要實現的是,如果任何一個字段爲空,或者密碼字段少於8個字符,則應該顯示警報,並顯示可能的結果。但是,如果我輸入的內容不是所有字段都是空白的,它只會提交表單並將我發送到下一頁。 我在這裏錯過了什麼?JavaScript沒有檢查邏輯語句

<script> 
function validateForm() 
{ 
//var x=document.register.username.value 
var x="document.forms["register"]["username"].value"; 
var y="document.forms["register"]["homeaddress"].value"; 
var z="document.forms["register"]["password"].value"; 
if (x == "" || y == "" || z == "")  { 
alert("You must fill in all fields in the application"); 

return false; 
} else if (z.length < 8) { 
alert("Passwords must be at least 8 characters long"); 
return false; 
    } 

return true; 
} 
</script> 

的形式如下:

<form name="register" method="post" action="tryregister.php" onsubmit="return validateForm();"> 

Username: <input type="text" name="username" maxlength="50"><br> 
Home address: <input type="text" name="homeaddress" maxlength="50"><BR> 
Password: <input type="password" name="password" maxlength="50"><br> 

<input type="submit" value="Register me!"> 
+1

語法高亮這裏應該給你這個問題的一個很好的指示。你不應該引用你的'x','y'或'z'值。 –

+0

@WaleedKhan謝謝!這似乎是訣竅! – enrm

+0

JavaScript正常工作。這是你的代碼壞了。 – user2736012

回答

2

您需要正確地訪問表單元素。你已經把他們在字符串中:

更改以下行

var x="document.forms["register"]["username"].value"; 
var y="document.forms["register"]["homeaddress"].value"; 
var z="document.forms["register"]["password"].value"; 

var x=document.forms["register"].username.value; 
var y=document.forms["register"].homeaddress.value; 
var z=document.forms["register"].password.value; 
+0

謝謝!使用javascript檢查輸入字段的安全含義是什麼?假設正則表達式和mysqli輸入衛生在下一頁完成(雖然沒有長度檢查)。 – enrm

+0

爲了提高安全性,請始終在服務器端進行驗證。 – Rajesh

2

左右取下雙引號

var x="document.forms["register"]["username"].value"; 
     ^^           ^^ 

這樣

var x = document.forms['register']['username'].value 
2

是的,你錯過了這裏的根本。

在你的代碼,

var x="document.forms["register"]["username"].value"; 
var y="document.forms["register"]["homeaddress"].value"; 
var z="document.forms["register"]["password"].value"; 

您聲明x是一個字符串'document.forms["register"]["username"].value'

它應該是一個表達,應該評估一些價值。

所以,請更新此代碼:

var x=document.forms["register"]["username"].value; 
var y=document.forms["register"]["homeaddress"].value; 
var z=document.forms["register"]["password"].value; 
1

您需要刪除在你的作業帶引號的xy,並且z

var x=document.forms["register"]["username"].value; 
var y=document.forms["register"]["homeaddress"].value; 
var z=document.forms["register"]["password"].value";