jQuery - IE удаляет половину содержимого - PullRequest
0 голосов
/ 17 июня 2010

Мне действительно нужна помощь с этим! это отлично работает в Firefox, и кроме того, что Google Chrome не делает там идеальное содержание textarea.

То, что делает приведенный ниже код, - это просто когда пользователь видит сообщение, которое он хочет прокомментировать, он просто вводит данные в текстовую область рядом с сообщением и щелчком отправки. После отправки он добавляет комментарий к другим комментариям.

Однако в IE (все версии) он добавляет комментарий в правильном месте, но удаляет некоторые HTML-теги вокруг первого комментария, а затем удаляет все остальные посты ниже поста, который прокомментировал пользователь!

Вот мой код;

function add_comment( token, loader, internal_error, internal_error_fbs ){
$('textarea.n-c-i').focus(function(){
    if( $(this).html() == 'write a comment...' ) {
        $(this).html('');   
    }
});
$('textarea.n-c-i').blur(function(){
    if( $(this).html() == '' ) {
        $(this).html('write a comment...'); 
    }                                 
});
$(".add-comment").bind("click", function() {
    try{
        var but = $(this);
        var rel = $(this).parents(".n-w").attr("rel");
        var comment_input_box = $('[rel=box-' + rel + ']');
        var comments_div = $('[rel=box-w-' + rel + ']');
        var comments_ul = $('[rel=cb-' + rel + ']');

        var new_comment = comment_input_box.val();
        var comments_div_data = comments_div.html();
        var comments_ul_data = comments_ul.html();

        var results = $('[rel=' + rel + ']').find('.com-result');
        results.html(loader);

        comment_input_box.attr("disabled", "disabled");
        but.attr("disabled", "disabled");

        //alert(comments_ul.length);

        $.ajax({ 
            type: 'POST', url: './', data: 'add-comment=true&ref=' + encodeURIComponent(rel) + '&com=' + encodeURIComponent(new_comment) + '&token=' + token + '&aj=true', cache: false, timeout: 7000, 
            error: function(){ $.fancybox(internal_error, internal_error_fbs); results.html(''); comment_input_box.removeAttr("disabled"); but.removeAttr("disabled"); }, 
            success: function(html){ 
                auth(html);
                if( html != '<span class="error-msg">Error, message could not be posted at this time</span>' ) {
                    if( comments_ul.length == 0 ) {
                        // if first comment to be made
                        comments_div.html('<ul class="com-box" rel="cb-' + rel + '">' + html + '</ul>' + comments_div_data);
                        comments_div.find('li:last').fadeIn();
                        retrieve_comments( token, loader, internal_error, internal_error_fbs );
                        add_comment( token, loader );
                    }else{
                        // if not, just add another li to the ul list
                        comments_ul.html(comments_ul_data + html);
                        comments_ul.find('li:last').fadeIn();
                        retrieve_comments( token, loader, internal_error, internal_error_fbs );
                    }
                }
                results.html('');
                comment_input_box.removeAttr("disabled");
                but.removeAttr("disabled");
            }                           
        });
    }catch(err){alert(err);}
    return false;
});
}

ЛЮБАЯ ПОМОЩЬ ОЧЕНЬ ЦЕНА!

1 Ответ

0 голосов
/ 17 июня 2010

Код HTML удален или просто отключен?Изучение DOM должно прояснить разницу.

Было бы хорошо увидеть HTML-код, с которым вы работаете.Я предполагаю, что IE ведет себя по-разному, когда вы отключаете элементы comment_input_box и but ... или позже удаляете этот атрибут disabled.

Были некоторые сообщения о том, что IE имеетдругое поведение в функции removeAttr().Вы можете попробовать использовать attr(attribute, "") для очистки атрибута.Это показывает другое поведение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...