当用户试图在弹出警报后使用javascript阻止默认值时,Chrome会将用户踢出表单
我正在进行一些简单的表单验证,它在FF和IE中工作。简单地说,如果表单上的日期超出范围,javascript将阻止表单提交。然而,在Chrome中,它完全被破坏了。当preventDefault启动时,Chrome会将用户从应用程序中注销,并返回到索引/登录页面。我不知道为什么 我使用的代码如下:当用户试图在弹出警报后使用javascript阻止默认值时,Chrome会将用户踢出表单,javascript,google-chrome,Javascript,Google Chrome,我正在进行一些简单的表单验证,它在FF和IE中工作。简单地说,如果表单上的日期超出范围,javascript将阻止表单提交。然而,在Chrome中,它完全被破坏了。当preventDefault启动时,Chrome会将用户从应用程序中注销,并返回到索引/登录页面。我不知道为什么 我使用的代码如下: function cancelEvent (e) { if (e.preventDefault) { e.preventDefault(); } else { e.return
function cancelEvent (e) {
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
}
它是由人喂养的
function validateFields(evt) {
evt = evt ? evt : window.event;
var invalid = false;
//validation #1: Consent Date should NOT be in the future
var today = new Date();
var consentDate = document.forms["ptform"].elements["calConsent"].value;
var consDate=convertDate(consentDate);
if(consDate>today){
invalid=true;
var consentDateTitle=document.getElementById("consentDateTitle");
consentDateTitle.className = consentDateTitle.className + " errormessage";
alert("Consent Date cannot be in the future");
}
//end validation #1
if (invalid) {
cancelEvent(evt);
}
}
差不多就是这样。在FF和IE中工作正常,但Chrome会崩溃。你知道为什么吗?我不是js专家…:(
我的事件处理程序代码:
// listen to an event
function listenEvent(eventObj, event, eventHandler) {
if (eventObj.addEventListener) {
eventObj.addEventListener(event, eventHandler,false);
} else if (eventObj.attachEvent) {
event = "on" + event;
eventObj.attachEvent(event, eventHandler);
} else {
eventObj["on" + event] = eventHandler;
}
}
我能把你的代码修改一下吗
function validateFields(evt) {
evt = evt || window.event;
var invalid; //Null qualifies as false too
//validation #1: Consent Date should NOT be in the future
var today = new Date();
var consentDate = document.forms["ptform"].elements["calConsent"].value;
var consDate=convertDate(consentDate);
if(consDate>today){
invalid=true;
var consentDateTitle=document.getElementById("consentDateTitle");
consentDateTitle.className += " errormessage";
alert("Consent Date cannot be in the future");
return false; //Prevents bubbling and default behavior
}
//end validation #1
}
Chrome JS控制台中有错误吗?ctrl shift I和“控制台”也有,你能发布整个页面吗?控制台中没有错误。不能真正发布整个页面…我想我必须制作一个模型。这很奇怪,因为…在ff/ie中很好,但这种奇怪的事情发生在Chrome中…好吧,它在表单提交中通常做了奇怪的事情。只有在Chrome.s中eems cancelEvent函数不是问题所在,di不确定它在哪里。我需要做更多的调试。谢谢你的回答。我会深入挖掘。好的。我有选择地逐行进行。在我放入警报框之前,这两个函数中的所有功能都可以正常工作。一旦我放入警报框,chrome就会崩溃。有什么线索说明为什么会这样吗d be?我的事件处理程序代码是否以某种方式误解了在警报框上单击“确定”的意思?嗯。也许我实现了错误,但这在IE中有效,允许在ff中不正确地提交,并且警报仍然会在chrome中抛出用户:(这与警报有关。任何触发的警报都会将用户踢出。我拥有的验证代码有效-它只是在警报框上中断。我有点困惑,但我必须做更多的调试…我感觉警报可能是奇怪的行为。记住警报会停止所有JS执行。创建一个小弹出窗口可能是值得的。)x、 这样,您就可以在不停止应用程序的情况下将消息传回给用户。