2012-12-04 164 views
0

提交以下繞過javascript驗證。是因爲onclick,還是我錯過了什麼?表單提交繞過javascript驗證

感謝

FORM

<form name="myprofile" action="do_update" method="post" onsubmit="return validate_submission(this.name)"> 
    <input type="text" id="text_fullname" name="text_fullname" value="" maxlength="100" /> 
    <div id="submit_button" onclick="document.myprofile.submit()">SUBMIT</div> 
</form> 

JS

function validate_submission(formname) 
{ 
    alert(formname); return false; 
} 
+0

這個問題是沒有意義的,JavaScript驗證純粹是對視覺輔助/唯一的裝飾!真正的驗證是在服務器端完成的!要繞過它,只需刪除onclick事件。 – Philip

+0

@Philip - JavaScript表單檢查的好處是它*更快*然後往返服務器。這是一個真正的好處,這個問題並非毫無意義。 – Quentin

+0

ie:visual aid ..很抱歉誤讀了q,我以爲他是想繞過另一個網站驗證,沒有我的咖啡,繼續 – Philip

回答

0

添加一個額外的提交腳本,並調用從DIV ...

<script> 
    function validate_submission(formname) 
    { 
     var is_valid = false; 

     if (formname == 'myprofile') 
     { 
      is_valid = true; 
     } 

     perform_submit(formname, is_valid); 
    } 

    function perform_submit(formname, is_valid) 
    { 
     if (is_valid === true) 
     { 
      document.myprofile.submit() 
     } 
     else 
     { 
      alert('Invalid'); 
     } 
    } 
</script> 
<form name="myprofile" action="do_update" method="post" onsubmit="return validate_submission(this.name)"> 
    <input type="text" id="text_fullname" name="text_fullname" value="" maxlength="100" /> 
    <div id="submit_button" onclick="validate_submission('myprofile')">SUBMIT</div> 
</form> 
</body> 
+0

可愛。謝謝... – BentCoder

+0

剛發現,如果我添加'if(formname =='myprofile'){return true; } else {return false; }'不驗證表單。這是正常的行爲嗎? – BentCoder

2

它不是這麼多,您使用的是onclick爲您所使用form_ref.submit()其提交表單而不會觸發submit事件。

您的選擇:

  • 使用一個真正的提交按鈕(不要叫submit()與JS)。這是最好的選擇。它將在屏幕閱讀器表單模式中顯示。它可以被選中。它會工作,如果JS沒有打開。
  • 調用驗證函數並在調用submit()之前檢查結果。
+0

感謝致謝 – BentCoder