onbeforeunload未正确触发

时间:2012-09-02 06:58:35

标签: javascript jquery onbeforeunload

我无法弄清楚为什么脚本不能使用表单。为什么$("form").submit(function()不会调用ID为form的表单?这个脚本甚至没有执行window.onbeforeunload所以我猜这个脚本有问题。有谁知道什么是错的?

<form id="formID" class="access_form" name="form" method="post" action="site.com">          
    <div class="row">
        <label for="email">Email Address:</label>
        <input class="txt_email" type="text" id="email" name="email" value="" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" />
    </div>
    <div class="row">
        <input type="submit" class="btn_access"  value="Get Immediate Access" name="submit1" />
    </div>
</form>

JavaScript的:

var formHasChanged = false;
var submitted = false; 

$(document).on('change', 'form.confirm-navigation-form input, form.confirm-navigation-form
select, form.confirm-navigation-form textarea', function (e) { 
    formHasChanged = true; 
}); 

$(document).ready(function () { 
    window.onbeforeunload = function (e) { 
        if (formHasChanged && !submitted) { 
            var message = "Please enter your email", e = e || window.event; 
            if (e) { 
                e.returnValue = message; 
            } 
            return message; 
        } 
    }
$("#formID").submit(function () { 
 submitted = true; 
});
});

1 个答案:

答案 0 :(得分:0)

试试这个。表单的id是表单本身。所以使用jQuery

选择这样的表单
$("#form").submit(function () {
  submitted = true;
}); 

OR

或者尝试为表单提供另一个id,例如“formID”。然后选择使用该ID。

$("#formID").submit(function () {
  submitted = true;
});