2013-10-04 5 views
2

Je veux résoudre le problème suivant dans FirefoxSélectionnez Texte sur clic en utilisant jQuery

Lorsque je tente de sélectionner le texte dans la zone de texte en utilisant un double clic sur la souris son ne pas sélectionner le texte le curseur passe au début de la text.Any idées comment résoudre ce problème? mais cela fonctionne bien dans googlechrome

j'ai essayé ce qui suit à partir de ce http://www.iwebux.com/demos/ajax/ je ce lien lorsque vous essayez d'éditer la colonne de prix vous ne pouvez pas sélectionner la valeur.Merci.

mon code:

$(document).ready(function() { 
    $('td.edit').click(function() { 
     $('.ajax').html($('.ajax input').val()); 
     $('.ajax').removeClass('ajax'); 

     $(this).addClass('ajax'); 
     $(this).html('<input id="editbox" size="' + $(this).text().length + '" type="text" value="' + $(this).text() + '">'); 

     $('#editbox ').focus(); 
    }); 

    $('td.edit').keydown(function (event) { 
     arr = $(this).attr('class').split(" "); 
     if (event.which == 13) { 
      $.ajax({ 
       type: "POST", 
       url: "supplierprice/config.php", 
       data: "value=" + $('.ajax input').val() + "&rowid=" + arr[2] + "&field=" + arr[1], 
       success: function (data) { 
        $('.ajax').html($('.ajax input').val()); 
        $('.ajax').removeClass('ajax'); 
       } 
      }); 
     } 
    }); 

    $('#editbox').live('blur', function() { 
     $('.ajax').html($('.ajax input').val()); 
     $('.ajax').removeClass('ajax'); 
    }); 
}); 

Répondre

0

S'il vous plaît utiliser ce code

$('td.edit').click(function(e){ 
      var $target = $(e.target); 
      if($target.is('#editbox')){ 
       return; 
      } 

     } 
0

J'ai modifié votre script un peu.

http://jsfiddle.net/dKn4W/

Le problème est que l'événement click bouillonne de l'entrée #editbox, de sorte que le $ ('# editbox') .focus(); est exécuté à chaque clic, ce qui empêche la sélection du texte.

Modifier votre code quelque chose comme ça

 $('td.edit').click(function(e){ 
      var $target = $(e.target); 
      if($target.is('#editbox')){ 
       return; 
      } 
      ///// rest of code 
     } 
0

Essayez d'utiliser .select() fonction. Ceci est utilisé pour sélectionner le texte dans les éléments d'entrée modifiables.

Dans votre cas, essayez d'ajouter la ligne

$('#editbox').select(); 

en dessous de la ligne

$('#editbox ').focus(); 

espère que cette hepls.

+0

Cela causera que vous ne pouvez pas cliquer dans le texte, après cliquez sur le texte sera toujours sélectionné. – HarryFink

+0

@HarryFink Ahh! Oui, celui-ci a ce problème. Votre solution sera meilleure. – Bubi

0

Vous devez arrêter la propagation des événements click depuis #editbox vers votre td.edit. Essayez d'ajouter ceci:

$("td.edit").on("click", "#editbox", function(e) { e.stopPropagation(); }); 
Questions connexes