簡體   English   中英

JavaScript表單驗證仍在“ False”上提交表單

[英]JavaScript Form Validation Still Submits Form on 'False'

如上所述的問題。 由於公司政策的原因,我使用的是舊版瀏覽器(IE8和FF8)。 我無法解決此問題,但我的研究表明這不是問題所在...(是的,對)

我在Apache 2.4.9上使用PHP 5.5.12,后端是MySQL(5.6.17)。 該站點是CMS,已經有機地發展了幾年。

我有一個用戶管理頁面,用於添加,更新和刪除帳戶。 但是,無論我完成了什么表單提交。 最糟糕的例子是,如果管理員選擇刪除帳戶,並且在被問到“您是否真的希望刪除...?”時, 並取消,它仍然被刪除! 我已經復制了我的JavaScript和以下PHP / HTML的摘錄。

我已經嘗試過對JavaScript進行一些更改,例如在設置window.event.returnValue之后返回,但是我總是得到相同的結果。 我已經閱讀了幾天,一直保持空白! 我嘗試了onSubmit而不是onClick,但它確實不適合該網站,除了它也不起作用。

我開始認為瀏覽器的年齡是問題所在。 我可以在家庭開發盒上使用Safari來運行它。 任何幫助,將不勝感激。

的JavaScript

<script language="JavaScript">
function frmVerify(check, loginid, login) {
   if (check == 'add') {
      Uname=add_user.login_name.value;
      Pass1=add_user.password.value;
      Pass2=add_user.password2.value;
      if(Uname=='') {
          alert('A user name must be assigned to an account.');
          window.event.returnValue=false;
      }

      if(Uname == login) {
          alert('You cannot create an account with your own username (' + login + ')');
          window.event.returnValue=false;
      }

      if(Pass1 != Pass2) {
          alert('Entered passwords are not the same!  Make sure the password and verification fields match.');
          window.event.returnValue=false;
      }

      if(Pass == '') {
          alert('Assigning a password is required when creating an account!');
          window.even.returnValue=false;
      }
   } else if(check == 'update') {
      Uname=eval('edU_'+loginid+'.login_name.value');
      Pass1=eval('edU_'+loginid+'.password.value');
      Pass2=eval('edU_'+loginid+'.password2.value');
      if(Uname == '') {
          alert('A user name must be assigned to an account.');
          window.event.returnValue=false;
      }

      if(Pass1 != Pass2) {
          alert('Entered passwords do not match!  Make sure the passowrd and verification fields match.');
          window.event.returnValue=false;
      }
   } else if(check == 'del') {
      Uname=eval('edU_'+loginid+'.login_name.value');
      if(Uname == '') {
          request = 'Do you really wish to DELETE this user account?';
      } else {
          request = 'Do you really wish to DELETE user: ' + Uname + '?';
      }

      var answer = confirm(request);
      if(answer) {
         window.event.returnValue=true;
      } else {
         window.event.returnValu=false;
      }
   }
}
</script>

在PHP / HTML中,我有

echo "<form name=\"delU_$login_id\" id=\"delU_$login_id\" mehtod=\"POST\">";
echo "<input type=\"image\" src=\"./images/delete.png\" value=\"Delete\" onClick=\"return frmVerify('del', '$login_id', '$username');\">";
echo "</form>";

window.event.returnValue (您始終無法正確拼寫)是非標准的,因此不應使用。

您使用的是1990年代風格的固有事件屬性,而不是addEventListener ,因此:

return false;

如果您使用的是addEventListener那么您將:

event_object.preventDefault();

其中event_object是事件處理函數的第一個參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM