2016-02-05 2 views
0

J'ai un site MVC et j'ai une table html et en double-cliquant sur une cellule, il passera en mode d'édition et pour la première fois ça marche et la fois suivante quand je double sur le même cellule ou toute autre cellule il ne fonctionne pas, quand je fais un clic n'importe où et si je double clique ça fonctionne très bien.double clic ne fonctionne pas après la 1ère fois

Je suspecte un conflit entre un simple clic et un double clic. Mise à jour: Testé dans Chrome et fonctionne correctement sans problème, il ressemble à un problème de navigateur avec IE 11 et versions antérieures.

function EditCell(thisCell, colNum) { 
    var Id; 

    // if the table cell is not in edit mode 
    if ($(thisCell).find('input').length == 0) { 
     if (colNum == 4 && $(thisCell).parent().parent().parent()[0].id == 'OverrideTable') { 
      myBlk = $(thisCell).html(); 
      $(thisCell).html('<input type="text" data-oldvalue="' + myBlk + '" />'); 
      $(thisCell).find('input').val(myBlk); 
      $(thisCell).find('input').trigger('focus'); 
      $(thisCell).find('input').keypress(function (e) { 
       if (e.which == 13) { 

        // If Enter key is pressed, update data. 
        myBlk = $(this).val(); 
        if (myBlk == '') { 
         $('div.errorSummary').html('my block cannot be empty!'); 
         $('div.errorSummary').show(); 
        } else { 
         Loadmyblk(myBlk, this); 
LeaseOverrideObj.GetLeaseOverride()); 
        } 
      }); 
     } 
+2

Je devine que votre fonction 'EditCell()' affecte le code HTML qui supprime le gestionnaire d'événements 'dblclick' sur la cellule elle-même. Pouvez-vous s'il vous plaît poster le code de cette fonction, et aussi le HTML aussi. –

+1

Qu'est-ce que cela a à voir avec MVC? – Anil

+0

Votre code est-il placé dans une autre fonction? – Mivaweb

Répondre

0

Essayez ceci, cela devrait fonctionner, ajouter une classe personnalisée, par ex. "EditableCell" pour l'utilisation dans la liaison d'événement dblclick sur un document.

$('#TableOverride tr:gt(0)').each(
    function() { 
     $(this).find('td:eq(9)').removeClass('EditableCell').addClass('EditableCell'); 
    }); 
}); 

$(document).on('dblclick', '.EditableCell', function() 
     { EditCell(this, 9); 
     }); 

S'il vous plaît noter $(document).on ne devrait pas être appelé dans une boucle, il doit être appelé qu'une seule fois dans document.ready.

Js Fiddle

Mise à jourfiddle link to demo dblclick on dynamically added events

+0

Ne fonctionne pas du tout. auparavant, il travaillait la première fois. Qu'est-ce que la classe EditableCell ?? – Jey

+0

Son travail dans IE-11 aussi, se référer à JS Fiddle http://jsfiddle.net/anilk/tqyn3/2026/. "EditableCell" est une classe personnalisée ajoutée pour l'utilisation de la liaison d'événement dblclick sur un document. – Anil

+0

l'événement dblclick avec alerte fonctionne bien selon votre exemple, ma fonctionnalité de l'application est sur dblclick il va créer une zone de texte dynamique et je dois entrer quelque chose et il va chercher et obtenir les données et afficher pendant ce processus il va recréer tout le html lignes dynamiquement et en quelque sorte il se déconnecter l'événement dblclik et il ne fonctionnera pas – Jey