2010-06-17 5 views
3

J'ai une zone de texte avec le texte par défaut 'écrire un commentaire ...'. lorsqu'un utilisateur met à jour la zone de texte et clique sur "ajouter un commentaire" Google Chrome n'obtient pas le nouveau texte. voici mon code;jQuery - google chrome ne sera pas mis à jour valeur textarea

function add_comment(token, loader){ 
$('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 parent = but.parents('.n-w'); 
     var ref = parent.attr("ref"); 
     var comment_box = parent.find('textarea'); 
     var comment = comment_box.val(); 
     alert(comment); 
     var con_wrap = parent.find('ul.com-box'); 
     var contents = con_wrap .html(); 
     var outa_wrap = parent.find('.n-c-b'); 
     var outa = outa_wrap.html(); 
     var com_box = parent.find('ul.com-box'); 
     var results = parent.find('p.com-result'); 
     results.html(loader); 
     comment_box.attr("disabled", "disabled"); 
     but.attr("disabled", "disabled"); 
     $.ajax({ 
      type: 'POST', url: './', data: 'add-comment=true&ref=' + encodeURIComponent(ref) + '&com=' + encodeURIComponent(comment) + '&token=' + token + '&aj=true', cache: false, timeout: 7000, 
      error: function(){ $.fancybox(internal_error, internal_error_fbs); results.html(''); comment_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(con_wrap.length == 0) { 
         outa_wrap.html('<ul class="com-box">' + html + '</ul>' + outa); 
         outa_wrap.find('li:last').fadeIn(); 
         add_comment(token, loader); 
        }else{ 
         com_box.html(contents + html); 
         com_box.find('li:last').fadeIn(); 
        } 
       } 
       results.html(''); 
       comment_box.removeAttr("disabled"); 
       but.removeAttr("disabled"); 
      }       
     }); 
    }catch(err){alert(err);} 
    return false; 
}); 

}

une aide très appréciée.

+0

Chaque fois que vous signalez un problème, vous devez a) écrire ce que vous attendez de se produire (que vous avez fait) et ** b) écrire ce qui ne se produit ** –

+0

désolé que le rendement d'alerte() (ligne 19) 'écrire un commentaire ...' peu importe ce qui se trouve dans la zone de texte, seulement en chrome. –

Répondre

7

Je crois que vous devriez utiliser val() et non html() sur une zone de texte. D'un côté, pour Chrome, utilisez l'attribut d'espace réservé dans la zone de texte. Vous n'aurez pas besoin de beaucoup de ce code.

<textarea placeholder="Write a comment"></textarea>

+4

J'ai également remarqué sur les expériences passées que Chrome est buggé lors de la mise à jour ''). Il devrait vraiment être traité comme un marqueur unaire ('