10/10/2018, 10:32

Xử lí form nhập thông tin ?

Mình đang làm web , đang làm đến phần nhập thông tin sản phẩm vào cơ sở dữ liệu , mình gặp phải 1 số lỗi sau , mọi người chỉ giùm mình với nhé :

1-Trong form nhập thông tin, mình để vào nút Submit sự kiện onclick="kiemtra()" , tức là gọi đến hàm để kiểm tra tính hợp lệ của form .
Nếu như action để trống thì nó kiểm tra bình thường .

Còn ở đây acction mình để đến 1 file asp để xử lí thông tin , qua đó chèn vào CSDL , nhưng mà nếu như ngay mục đầu tiên bị lỗi , nó thông báo lỗi xong --> nó chuyển ngay đến file asp trong khi các mục ở dưới chưa nhập gì cả (lưu ý là nếu ko để action , thì form của mình nó kiểm tra lỗi bình thường , từ trên xuống dưới). Như vậy là sao hả mọi người ?

2- Mình giả sử form của mình có các mục cần nhập : user , pass , re-pass , mail.
Nếu như mình nhập user , mail đúng rồi , nhưng nhập pass và re-pass nó ko giống nhau --> tất nhiên là sẽ báo lỗi rồi , nhưng làm sao sau khi báo lỗi xong , nó vẫn giữ nguyên các giá trị của user , mail chứ ko reset lại ( mình dùng cái " return false " nhưng ko được)
bvnguyen viết 12:39 ngày 10/10/2018
thế này nha
câu 1: bạn viết onsubmit="return kiemtra();" vào thẻ <form> và hàm kiemtra() bạn phải return true hoặc false nhé, như thế nếu nhập ko đúng thì form không submit.
câu 2: cái action thì để đến chính file hiện tại luôn, nhận các giá trị và hiển thị ra bình thường
nam_long viết 12:42 ngày 10/10/2018
Dùng onsubmit đi onsubmit="return kiemtra()"

Code:
function kiemtra()
{
if(document.getElementById('name').value="")
{
alert('Nhap username');
return false;
}

.....................tương tự với những kiểm tra khác
return true;
}
lenggiauit viết 12:46 ngày 10/10/2018
Bỏ luôn cái button type = submit đấy đi, thay bằng button thường thôi, onclick và button đó thì check nếu ok thì document.FormName.submit(); Chẳng phải viết nhiều + return này nọ
bvnguyen viết 12:33 ngày 10/10/2018
Được gửi bởi lenggiauit
Bỏ luôn cái button type = submit đấy đi, thay bằng button thường thôi, onclick và button đó thì check nếu ok thì document.FormName.submit(); Chẳng phải viết nhiều + return này nọ
không nên thế, nếu trình duyệt của khách mà không có javascript thì form không bao giờ submit được đấy
hien1303 viết 12:32 ngày 10/10/2018
Sao vẫn ko được nhỉ
Code:
 <script language="javascript">
	function kiemtra()
	{
  		var acc,pass,repass,hoten,ngay,thang,nam,email,diachi,dienthoai;
  		acc=document.a.Acc.value;
  		pass=document.a.Pass.value;
  		repass=document.a.RePass.value;
  		hoten=document.a.HoTen.value;
  		diachi=document.a.DiaChi.value;
  		email=document.a.Email.value;
  		dienthoai=document.a.DienThoai.value;
  		ngay=document.a.Ngay.value;
  		thang=document.a.Thang.value;
  		nam=document.a.Nam.value;
  
  		if(acc=="")
    	{
	  		alert("Bạn phải nhập Tài Khoản. ");
	  		a.Acc.focus();
	  		return false;
		}
  		if(pass=="") 
    	{
	  		alert("Bạn phải nhập mật khẩu. ");
	  		a.Pass.focus();
	  		return false;
		}
   		if(pass.length<6 || pass.length>20)
     	{
	  		alert("Mật khẩu phải từ 6-20 ký tự.");
	  		a.Pass.focus();
	  		return false;
		}	
   		if(repass!=pass)
   		{
	  		alert("Xác nhận mật khẩu không đúng! ");
	  		a.RePass.focus();
	  		return false;
		}
		if(hoten=="") 
   	    {
		  	alert("Bạn phải nhập họ tên. ");
	  		a.HoTen.focus();
	  		return false;
		}
			if(ngay=="")
		{
			alert("Bạn phải nhập ngày sinh. ");
	  		a.Ngay.focus();
	  		return false;
		}
		if(thang=="")
		{
			alert("Bạn phải nhập tháng sinh. ");
	  		a.Thang.focus();
	  		return false;
		}
		if(nam=="")
		{
			alert("Bạn phải nhập năm sinh. ");
	  		a.Nam.focus();
	  		return false;
		}	
		if(diachi=="") 
    	{
	  		alert("Bạn phải nhập địa chỉ. ");
	  		a.DiaChi.focus();
	  		return false;
		}
		re=/\w+@\w+\.\w+/;
		if(email=="")
	 	{
	  		alert("Bạn phải nhập Email. ");
	  		a.Email.focus();
	  		return false;
		}
		else if(re.test(email)==false)
	    {
	  		alert("Email không hợp lệ. ");
	  		a.Email.focus();
	  		return false;
		}
		if(addr=="") 
    	{
	  		alert("Bạn phải nhập Address. ");
	  		a.txtAddress.focus();
	  		return false;
		}
}
</script>
	  <p>&nbsp;</p>
      <div align="center">
        <form id="a" name="a" method="post" action="XuLy_ThemAd.asp" onsubmit ="return kiemtra()">
          <table width="504" border="0">
            <tr>
              <td colspan="2"><span class="titleAdmin">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TH&Ecirc;M MỚI ADMIN </span></td>
            </tr>
            <tr>
              <td width="130">Tài khoản </td>
              <td width="364"><input name="Acc" type="text" id="Acc" size="32" /></td>
            </tr>
            <tr>
              <td>Mật khẩu </td>
              <td><input name="Pass" type="password" id="Pass" size="32" /></td>
            </tr>
            <tr>
              <td>Nhập lại mật khẩu </td>
              <td><input name="RePass" type="password" id="RePass" size="32" /></td>
            </tr>
            <tr>
              <td>Họ tên </td>
              <td><input name="HoTen" type="text" id="HoTen" size="32" /></td>
            </tr>
            <tr>
              <td>Ngày sinh </td>
              <td>Ngày
                <select name="Ngay" id="Ngay">
                  <option selected="selected" value="">- -</option>
                  <%
				for i=1 to 31
				%>
                  <option value="<%=i%>"><%=i%></option>
                  <%
				next
				%>
                </select>
Tháng
<select name="Thang" id="Thang">
  <option selected="selected" value="">- -</option>
  <%
				for i=1 to 12
				%>
  <option value="<%=i%>"><%=i%></option>
  <%
				next
				%>
</select>
Năm
<select name="Nam" id="Nam">
  <option selected="selected" value="">- - - -</option>
  <%
				for i=1960 to 2000
				%>
  <option value="<%=i%>"><%=i%></option>
  <%
				next
				%>
</select></td>
            </tr>
            <tr>
              <td>Email</td>
              <td><input name="Email" type="text" id="Email" size="32" /></td>
            </tr>
            <tr>
              <td>Địa chỉ </td>
              <td><input name="DiaChi" type="text" id="DiaChi" size="32" /></td>
            </tr>
            <tr>
              <td>Điện thoại </td>
              <td><input name="DienThoai" type="text" id="DienThoai" size="32" /></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td>&nbsp;</td>
            </tr>
            <tr>
              <td colspan="2"><span class="titleAdmin">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PH&Acirc;N QUYỀN CHO ADMIN </span></td>
            </tr>
            <tr>
              <td colspan="2"><table width="499" border="0">
                  <tr>
                    <td width="245">1.
                      <input name="q1" type="checkbox" id="q1" value="1" />
                      &nbsp;Quyền quản l&yacute; Admin </td>
                    <td width="243">4.
                      <input name="q4" type="checkbox" id="q4" value="4" />
                      &nbsp;Quyền quản l&yacute; Tin Tức </td>
                  </tr>
                  <tr>
                    <td>2. 
                    <input name="q2" type="checkbox" id="q2" value="2" />
&nbsp;Quyền quản lý Laptop </td>
                    <td>5. 
                    <input name="q5" type="checkbox" id="q5" value="5" />
&nbsp;Quyền quản lý Khách Hàng </td>
                  </tr>
                  <tr>
                    <td>3.
                      <input name="q3" type="checkbox" id="q3" value="3" />
                      &nbsp;Quyền quản l&yacute; Phụ Kiện </td>
                    <td>6.
                      <input name="q6" type="checkbox" id="q6" value="6" />
                      &nbsp;Quyền quản l&yacute; Hoá Đơn </td>
                  </tr>
              </table></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td><input type="submit" name="Submit" value="Thêm mới Admin" />
                  <input type="reset" name="Submit2" value="Hủy bỏ" /></td>
            </tr>
          </table>
        </form>
À được rồi nhưng tại sao nó chỉ chạy đúng trên IE mà ko đc trên fire-fox nhỉ ?

Còn vấn đề kia, tức là khi mình nhập dữ liệu , nếu có 1 ô nhập sai , sau khi báo lỗi thì các ô còn lại vẫn giữ nguyên giá trị chứ ko reset hết thì phải làm thế nào ?
thuyduongcd viết 12:47 ngày 10/10/2018
acc=document.a.Acc.value;
FF không nhận cái này. Tham khảo lại cách get element trong FF
Nhân Tâm viết 12:35 ngày 10/10/2018
nên để như sau:
<input type="text" id="fullname" name="fullname" />
chạy được cả IE & FF

Khai báo cái mớ sau cho gọn lại:
PHP Code:
var document.a;
acc f.Acc.value;
pass f.Pass.value;
repass f.RePass.value;
...
vv 
hien1303 viết 12:45 ngày 10/10/2018
Được gửi bởi thuyduongcd
FF không nhận cái này. Tham khảo lại cách get element trong FF
Vẫn ko được bạn ơi , nó báo lỗi xong cái rồi chuyển luôn qua action chứ ko kiểm tra lỗi các ô nhập ở dưới.

[=========> Bổ sung bài viết <=========]

Được gửi bởi Nhân Tâm
nên để như sau:

chạy được cả IE & FF

Khai báo cái mớ sau cho gọn lại:
PHP Code:
var document.a;
acc f.Acc.value;
pass f.Pass.value;
repass f.RePass.value;
...
vv 
Như vậy thì có khác gì của mình đâu nhỉ , chỉ mỗi thứ tự khai báo thôi à
tiger0209 viết 12:35 ngày 10/10/2018
ca nhà ơi ai co tài liệu về thiết kế web nhất la APS.NET thi up cho minh xin nhé
Bài liên quan
0