我很努力使我的网站登录功能适用于所有浏览器 - 最接近在Firefox中出现“ReferenceError:event is not defined”错误。提交替代表格以阻止默认
我知道现在有很多关于preventDefault的文章在Firefox中处理方式不同,但我发现的选项似乎都不适用于所有浏览器。这是我的基本设置...
<button id="signinbutton" name="signin" type="submit" onclick="signInSubmit(this.form, this.form.signInPassword);">Sign In</button>
function signInSubmit(theForm, theHashPassword) {
event.preventDefault(); //disables submit action so I can add custom code
//rest of sign in...
//e.g. theForm.appendChild(p);
}
原因火狐给出了错误,是我没有显式地从我的点击通过“事件” /提交处理程序(我不认为我可以做我的现有的设置,因为我直接用其他参数调用“signInSubmit”)。从其他职位我尝试了...
删除event.preventDefault()和更改按钮类型“提交”,“按钮”(但这只是防止登录所有的浏览器都工作,因为我“M传递数据使用this.form)
除去event.preventDefault()和加入‘返回false’在signInSubmit()的底部 - 这有同样的问题,以上述的组合也
最有前途的建议是从我的按钮中删除onclick属性,并实施类似...
$('#signInForm').submit(function(e) { if(!ready){ e.preventDefault(); signInSubmit(this.form, this.form.signInPassword, false); } });
但是从一个jQuery选择.submit()的情况下,当然,我不能用“this.form”来称呼我的原始形式,也不可以有我了能够以signInInSubmit所期望的格式返回表单,格式为$('#signInForm')" or "$('#signInForm').serialize()
。
道歉,如果对这个问题的想法都是相当混乱的,但我真的希望有人注意到我的设置中可以重新设计的东西 - 感谢任何想法!
请勿使用点击事件来控制表单提交。使用提交事件。否则,键盘提交将绕过你的代码! –
请提供您的输出HTML样本,以便模型准确:) –
好吧,换句话说,完全删除onclick - 但这是一个普遍的安全建议,而不是解决我的问题的东西吗? – d3wannabe