0

我发现使用 IE 的人在使用表格注册会议时遇到困难。

当用户单击表单底部的“继续...”时,应该运行一系列检查,然后用户应该被重定向到 PayPal 以支付参加会议的费用。我认为(虽然我不确定,因为我不熟悉 jquery)问题出在这段代码中的 parseJSON:

function check_form() {
    $('.form_error').html('');
    $('#form_submit').hide();
    $('#form_process').show();
    $.post("conference_check.php", $('#fta_form').serialize()).done(function (data) {
        try {
            var data = $.parseJSON(data);

            jQuery.each(data, function (index, itemData) {
                if (index != 'e') {
                    var element = index + '_error';
                    $('#' + element + '').html(' - ' + data[index]);
                }
            });

            $('html, body').animate({ scrollTop: 0 }, 'slow');
        } catch (e) {
            $('#content_wrapper').html('');
            $('#process_wrapper').html(data).show();
        }

        $('#form_submit').show();
        $('#form_process').hide();
    });
}

是否有任何快速简单的方法可以更改上面的代码,以免导致 IE 8 出现问题?

我无法与为我编写代码的人联系,因为他离开了几天,但如果可能的话,我真的需要在此之前进行修复,因为表单是实时的,人们都在吵着要注册......

任何帮助都感激不尽。如果我按照上面的方式发帖违反了任何论坛规则,请原谅。

4

1 回答 1

0

我认为问题可能出在以下几行:

$('.form_error').html('');
$('#content_wrapper').html('');
$('#process_wrapper').html(data).show();

根据我的经验,IE 并不真正喜欢命令“html”,但这只发生在您的页面以 quirks 模式或更早版本呈现时。我知道有两种解决方案(但您应该在更改实时版本之前先测试这两种解决方案,因为它们可能会在页面的不同部分进行其他更改):

  1. 用“replaceWith”替换“html”命令,即:

    $('#process_wrapper').replaceWith(data).show();

  2. 将此添加到页面顶部:

    <!DOCTYPE html> <meta http-equiv="X-UA-Compatible" content="IE=8" />

(第一个适用于早期的 IE 版本,第二个强制使用 IE8 呈现页面,这实际上适用于“html”命令)

于 2013-09-07T23:40:59.093 回答