Javascript - 原型:表单上的Event.observe不适用于IE

时间:2010-10-14 20:11:31

标签: javascript xml events prototypejs observer-pattern

我有这个JS从服务获取XML响应,它是一个True或一个False,脚本应该捕获提交并从服务获得响应。 问题是我发现它不起作用,因为当我提交时,我看到IE上的XML响应(6/7/8),当脚本应该捕获它并验证XML响应时。

<div id="eventForm" style="display:none;">
    Event.observe('formDataPersonal', 'submit', function(event) {
    $('formDataPersonal').request({
        onSuccess: function(t) {
            var xml  = t.responseXML.documentElement;
            var stateNode = '';
            var msgNode = '';
            if (navigator.appName == "Microsoft Internet Explorer"){
                stateNode = xml.childNodes[0].nodeValue.toLowerCase();
                msgNode = xml.childNodes[1].nodeValue;
            }else{
                stateNode = xml.childNodes[0].textContent.toLowerCase();
                msgNode = xml.childNodes[1].textContent;
            }
            if (stateNode == 'true'){
                $('transparentDiv').style.display='none';
                $('popup').style.display='none';
                validateIntegrationPopup();
            }else{
                var error = msgNode;
                if (error != ''){
                    $('interfase').innerHTML = error;
                }
            }
        }
     })
    });
</div>

我很感激你的帮助。

2 个答案:

答案 0 :(得分:1)

我认为问题可能是'IE'没有看到提交事件所以最终只是正常提交​​表单:

请参阅:https://rails.lighthouseapp.com/projects/8994/tickets/4411-railsjs-on-bodyobservesubmit-but-submit-doesnt-bubble-in-ie

答案 1 :(得分:1)

这是一个老问题,但我设法将其作为我在Google搜索中的第二个结果,所以:

您没有停止提交事件进入浏览器,这就是表单提交的原因,即使附加了事件处理程序。添加event.stop()

<div id="eventForm" style="display:none;">
    Event.observe('formDataPersonal', 'submit', function(event) {
       event.stop();
       $('formDataPersonal').request({
          // .... code ....
       });
    });
</div>