表单提交绕过javascript验证

时间:2012-12-04 11:34:03

标签: javascript html

下面的提交绕过了javascript验证。是因为onclick甚至还是我错过了什么?

由于

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;
}

2 个答案:

答案 0 :(得分:2)

使用onclick并不是因为您正在使用form_ref.submit()提交表单而不触发submit事件。

您的选择:

  • 使用真实的提交按钮(不要用JS调用submit())。这是最好的选择。它将显示在屏幕阅读器表单模式中。它可以选项卡。如果没有打开JS,它将起作用。
  • 调用验证函数并在调用submit()之前检查结果。

答案 1 :(得分: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>