Javascript - Prototype: Event.observe в форме не работает для IE - PullRequest
0 голосов
/ 15 октября 2010

У меня есть этот JS, который получает XML-ответ от службы, его True или False, хорошо, что скрипт должен перехватить отправку и получить ответ от службы. Проблема в том, что я вижу, что это не работает, потому что, когда я делаю отправку, я вижу ответ XML на IE (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 ]

1 голос
/ 05 ноября 2011

Это старый вопрос, но мне удалось получить его как второй результат поиска в Google, поэтому:

Вы не мешаете отправке события проходить в браузер, поэтому форма отправляется, даже если к ней прикреплен обработчик события. Добавить в event.stop():

<div id="eventForm" style="display:none;">
    Event.observe('formDataPersonal', 'submit', function(event) {
       event.stop();
       $('formDataPersonal').request({
          // .... code ....
       });
    });
</div>
1 голос
/ 09 декабря 2010

Я думаю, что проблема может заключаться в том, что 'IE' не видит событие отправки, поэтому в итоге оно просто отправляет форму:

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

...