我正在尝试制作表单验证方法。我面临着一些问题:
2.焦点()根本不起作用。
这是html表单:
<form name ="reg" onsubmit ="return checkValidation(this)">
<p><label for="name">שם</label><input type="text" name="name" id="name" /> </p>
<p><label for="e-mail">אימייל</label><input type="text" name="email" id="email" /> </p>
<p><label for="password">סיסמא</label><input type="password" name="password" id="password" /></p>
<p><label for="sex">זכר</label><input type="radio" value="male"id="radio" name="radio" /></p>
<p><label for="sex">נקבה</label><input type="radio" value="female" name="radio" id="radio" /></p>
<p><label for="checkbox">אופנוע</label><input type="checkbox" name="bike" id="bike" value="Bike" /> </p>
<p><label for="checkbox">מכונית</label><input type="checkbox" name="car" id="car" value="Car" /> </p>
<p><label for="favorite">שחקן המועדף עליך</label>
<select>
<option value="פרקינס">דורון פרקינס</option>
<option value="סופוקליס שחורציאניטיס">סופוקליס שחורציאניטיס</option>
<option value="עומרי כספי">עומרי כספי</option>
<option value="דייויד בלו">דייויד בלו</option>
</select></p>
<p><label for="text"></label>
<textarea > רשום את הודעתך פה! </textarea></p>
<p><label for="reset"></label><input type="reset" name="reset" /></p>
<p class="submit"><input type="submit" value="שלח"/></p>
</form>
这是javascript代码:
<script type = "text/javascript">
function checkValidation()
{
isValidName();
isValidEmail();
isValidPass();
}
function isValidName()
{
var check = false;
var Allowed = "qwertyuiopasdfghjklzxcvbnm";
var str = document.reg.name.value.toLowerCase();
if(str == "")
{
alert("Enter your name!");
reg.name.focus();
return false;
}
for(i = 0;i<str.length;i++)
{
for(k = 0;k<Allowed.length;k++)
{
if(str[i] == Allowed[k])
{
check = true;
}
}
if(check == false)
{
alert("Please enter a valid name");
reg.name.focus();
return false;
}
check = false;
}
return true;
}
function isValidEmail()
{
str = reg.email.value;
var lastAtPos = str.lastIndexOf('@');
var lastDotPos = str.lastIndexOf('.');
if (lastAtPos < lastDotPos && lastAtPos > 0 && str.indexOf("..") == -1
&& str.indexOf('@@') == -1 && lastDotPos > 2 && (str.length - lastDotPos) > 2)
{
return true;
}
else
{
alert("Please enter a valid email");
reg.email.focus();
return false;
}
}
function isValidPass()
{
var notAllowed = "./;'[]{}\()-=_|";
var str = reg.password.value;
if(str.length > 6)
{
alert("The password must be lower than 6 characters");
reg.password.focus();
return false;
}
for(i = 0;i<str.length;i++)
{
for(k = 0;k<notAllowed.length;k++)
{
if(str[i] == notAllowed[k])
{
alert("You cannot use the following letters: " +notAllowed);
reg.password.focus();
return false;
}
}
}
return true;
}
</script>
非常感谢帮助者!
答案 0 :(得分:1)
函数checkValidation()不返回任何内容:
<form name ="reg" onsubmit ="return checkValidation(this)">
您需要检查每个子功能并尽快返回false。
function checkValidation() {
var go = isValidName();
if (go){
go = isValidEmail();
}
if (go){
go = isValidPass();
}
return go;
}
2:而不是var Allowed = "qwertyuiopasdfghjklzxcvbnm";
,你应该使用正则表达式,并消除以后的昂贵循环。
3:考虑使用经过测试的表单验证框架,如jQuery Validate。
4:我是第二篇关于需要服务器端验证的@Dan的帖子。
答案 1 :(得分:0)
为了防止表单提交,你的onsubmit处理程序必须返回一个布尔值false。你的任何东西都没有返回,所以浏览器会把它发送到服务器,服务器会发回没有任何值的表单。