“event.returnValue = false”未在IE中注册

时间:2013-11-13 17:15:11

标签: javascript html event-listener preventdefault buttonclick

代码:
https://dl.dropboxusercontent.com/u/16952797/webdev/uppg1/kontakt.html
https://dl.dropboxusercontent.com/u/16952797/webdev/uppg1/kontakt.js
http://jsfiddle.net/mptA5/

相关的代码部分:

function addEvent(element, eventType, theFunction, capture)
{
    if(element.addEventListener)
    {
        element.addEventListener(eventType, theFunction, capture);
    } 
    else if(element.attachEvent)
    {
       element.attachEvent( "on" + eventType, theFunction);
    }
}

function validateInput(form)
{
switch(form)
{
    case "other":
        if (document.getElementById("textareaOtherComment").value == "")
        {
            alert("Vänligen fyll i kommentarfältet!");
            return false;
        }
        if (document.getElementById("inputEmail").value == "")
        {
            alert("Vänligen fyll i mejlfältet!");
            return false;
        }
        return true;                                                    // NOTE: breaks aren't necessary after return statements
    case "sugg":
        if (document.getElementById("selectSuggestion").selectedIndex == 0)
        {
            alert("Vänligen välj en förslagskategori!");
            return false;
        }
        if (document.getElementById("textareaSuggestionComment").value == "")
        {
            alert("Vänligen fyll i kommentarfältet!");
            return false;
        }
        return true;            
    default:
        return false;
}
}

function preventDefaultAction(event)
{
    if (event.preventDefault)
{
        event.preventDefault();
}
    else if (event.returnValue)
{
        event.returnValue = false;
}
}

function preventDefaultEvents()
{
    addEvent(document.getElementById("btnOtherSubmit"), "click", preventDefaultAction, false);
    addEvent(document.getElementById("btnBugSubmit"), "click", preventDefaultAction, false);
}

function addEventListeners()
{
.
.
.
    addEvent(document.getElementById("btnOtherSubmit"), "click", function(){submitForm("other");}, false);
.
.
.
    addEvent(document.getElementById("btnSuggestionSubmit"), "click", function(){submitForm("sugg");}, false);
.
.
.
}

function init()
{
.
.
.
    preventDefaultEvents();
    addEventListeners();
}

上下文:我的“建议”(Lämnaettförslag)和“其他”(övrigt)表单在chrome(W3C浏览器)中按预期工作,但在IE(使用IE8测试)中,“其他”表单在buttonclick上提交即使输入没有通过验证过程...... 我在IE的F12开发人员工具中调试了“建议”表单和“其他”表单,似乎在按下按钮时,“其他”表单进入preventDefaultAction函数,而“建议”表单在验证失败时没有。 / p>

2 个答案:

答案 0 :(得分:1)

preventDefaultAction代码应该在validateInput函数内。在default:部分,而不是return false;

如果使用AddEventListener()/ attachEvent()

附加了事件处理程序,则简单return false;不会阻止默认浏览器操作

答案 1 :(得分:0)

错误发生在HTML文档中:

<input id=btnOtherSubmit class="buttons imagify buttonsSubmit btnSubmit" type=submit value=Skicka></div>

此错误导致表单的submit()函数在未经验证的情况下触发。
第52行现在更改为以下内容:

<div id=btnOtherSubmit class="buttons imagify buttonsSubmit">Skicka</div>