PDA

View Full Version : Mọi người vào xem giúp mình cái này với?



hvkhanh90
19-06-2011, 12:05 AM
ko biết sai ở đâu mà ko chạy đc :(
file .html đính kèm ở dưới !

<html>
<head>
<title> Ho van khanh</title>
<script language="javascript">

<!--

function validateFirstName()
{
var str= form1.1name.value;
if(str.length==0)
{
alert("the first name cannot be empty");
return false;
}
return true;
}
function validateLastName()
{
var str=form1.2name.value;
if(str.length==0)
{
alert("the last name cannot be empty");
return false;
}
return true;
}
function validateEmail()
{
var str=form1.email.value;
{
if(str.length==0)
alert("email cannot be empty");
return false;
}
return true;
}
function processform()
{
disp=open(" ", "result")
disp.document.write("<title>Result page</title> "+" <pre>")
disp.document.write("<h2 align='center'> "+"Thanks for signing in "+" </h2> "+" <hr> "+" <br><br>")
disp.document.write("first name \t\t: "+form1.1name.value+" <br>")
disp.document.write("last name \t\t: "+form1.2name.value+" <br>")
disp.document.write("email \t\t: "+form1.email.value+" <br>")
disp.document.write("your comments \t\t: "+form1.comment.value+" <br>")
disp.document.write("<pre>")
if(disp.confirm("is this information correct"))
disp.close()
}
//-->
</script>
</head>
<body>
<h1 align=center>Handing Form Events</h1><hr>
<form name="form1">
<p>First name: <input type="text" name="1name" size="10" onBlur="validateFirstName()"></p>
<p>Last name: <input type="text" name="2name" size="15" onBlur="validateLastName()"></p>
<p>Email: <input type="text" name="email" size="10" onBlur="validateEmail()"></p>
<p>Comments: <textarea name="comment" rows=4 cols=20>Enter your comments here</textarea></p>
<input type="submit" value="submit this form" onClick="processform()">
<input type="reset" value="reset">
</form>
</body>
</html>

HTT.itvn
19-06-2011, 02:50 AM
Trong JS không cho phép đặt số đầu tiên trong biến var đâu mà bắt buộc phải là kí tự chữ trước .

Ví dụ :

1name , 2name là sai . name1 , name2 là đúng .

Code của bạn ở trên chưa thực sự tối iu , Khi để trống 1 dòng nào đó thì nó vẫn xử lý sang trang mới do bạn thực hiện return true; trong mỗi function validate . Bạn chỉ cần sử dụng một function là đủ .
Còn nữa , bạn đặt biến var str= form1.1name.value; là không cần thiết nếu bạn vẫn phải sử dụng biến form1.1name.value; sau này .

Code mình viết lại cho bạn như sau :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ho van khanh</title>
<script language="javascript">
function processform() {
//----- Kiểm tra FirstName ------//
if (form1.fname.value=="")
{
alert('The first name cannot be empty !');
form1.fname.focus();
return false;
}
//----- Kiểm tra LastName ----//
if (form1.lname.value=='')
{
alert('The last name cannot be empty !');
form1.lname.focus();
return false;
}
//----- Kiểm tra Email --------//
if (form1.email.value=='')
{
alert('Email cannot be empty !');
form1.email.focus();
return false;
}
//----- Kiểm tra email này nhập có đùng hay không ------//
regEmail=/^\w*@\w\.\w$/
if (regEmail.test(form1.email.value))
{
alert(' wrong email !');
form1.email.focus();
return false;
}
//----- Kiểm tra phần ghi chú ------//
if(form1.comment.value=='')
{
alert('The comment cannot be empty');
form1.comment.focus();
return false;
}
//----- Hiển thị dữ liệu đã nhập ----- //
var disp=window.open('','Information');
disp.document.write("<title>Information page</title> "+" <pre>");
disp.document.write("<h2 align='center'> "+"Thanks for signing in "+" </h2> "+" <hr> "+" <br><br>");
disp.document.write("first name \t\t: "+form1.fname.value+" <br>");
disp.document.write("last name \t\t: "+form1.lname.value+" <br>");
disp.document.write("email \t\t: "+form1.email.value+" <br>");
disp.document.write("your comments \t\t: "+form1.comment.value+" <br>");
disp.document.write("</pre>");
}
</script>
</head>
<body>
<h1 align=center>Handing Form Events</h1><hr>
<form id="form1" name="form1" method="post" action="">
<table width="500" cellspacing="5">
<p>First name: <input type="text" name="fname" id = "fname" size="10" /></p>
<p>Last name: <input type="text" id = "lname" name="lname" size="15" /></p>
<p>Email: <input type="text" name="email" id = "email" size="10" /></p>
<p>Comments: <textarea name="comment" id = "comment" rows=4 cols=20>Enter your comments here</textarea></p>
<input type="button" value="submit this form" onClick="processform()">
<input type="reset" value="reset">
</table>
</form>
</body>
</html>

hvkhanh90
19-06-2011, 11:29 AM
ko hiểu do firefox hay do sai code nữa, mình copy y nguyên về vẫn ko chạy đc! :(

HTT.itvn
19-06-2011, 02:35 PM
Vấn đề để chạy trên tất cả trình duyệt thì với JS luôn làm mình đau đầu nhất , đặc biệt là FF nó luôn đọc code chuẩn của nó . Như đoạn code trên với Chrome thì chỉ cần kích vào là chạy , còn với IE thì hiển thị trống trơn , phải chạy trên localhost mới chạy được . Còn với FF thì nó đứng im . Mình cũng làm MOD cho VBB đã test đi test lại thấy nó toàn gây xung đột ở JS khác nhau với trình duyệt khác nhau ( có lẽ vì lý do đó mà ít MOD có JS kèm theo ) .

Vì vậy để chạy tốt trên tất cả trình duyệt thì bạn phải sử dụng các ngôn ngữ lập trình khác nữa như PHP , VB , JSP ... thay thế cho một số Function của JS .
Mình thường dung JS để chạy hiệu ứng ảnh , xử lý lỗi và xử lý điều kiện nội - ngoại vi . Chứ mình không dùng JS để chạy chương trình chính , mà luôn dùng ngôn ngữ lập trình khác như PHP , VB ...