2009-09-23 6 views
0

J'ai ajouté un jquery onclick eventhandler à la table comme suitévénement onclick sur cancel la table en utilisant jquery

$('#tableid').bind('click', ClickHandler); 

function ClickHandler(event) { 

    //here i am checking whether the cell that the user clicked is valid to enter data. 
    //if not, I would like to cancel the event. 

    e.preventDefault(); //this is not working. the cell that the user clicked still has focus. 
    return false; //this is also not working. the cell that the user clicked still has focus. 

} 

Comment puis-je annuler l'événement, cliquez sur une table?

+0

Existe-t-il un contrôle modifiable à l'intérieur de la cellule qui fait l'objet de la mise au point, ou y a-t-il plus de choses que vous ne le mentionnez? –

+0

J'ai une zone de texte à l'intérieur de la cellule. la zone de texte obtient le focus que je voudrais annuler. J'ai également ajouté des événements keydown, keypress, dblclick, keyup pour gérer la navigation dans la table. – Sridhar

Répondre

2

On dirait que vous appelez preventDefault() sur le mauvais objet. Le gestionnaire prend un paramètre "événement", mais vous utilisez "e".

Donc, votre code devrait être:


$('#tableid').bind('click', ClickHandler); 

function ClickHandler(event) { 
    event.preventDefault(); // event not e 
    return false; 
} 

EDIT: On dirait veulent vraiment quelque chose comme stopPropagation(), mais en sens inverse. Ainsi, au lieu d'un enfant qui empêche l'événement d'être reçu par un parent, vous essayez d'amener le parent à arrêter l'enfant qui reçoit l'événement en premier lieu.

Je suppose que vous voudrez peut-être quelque chose comme cela, alors:


$('#tableid *').bind('click', ClickHandler); // note the * to apply this to all children 

function ClickHandler(event) { 
    event.preventDefault(); // event not e 
    return false; 
} 
+0

J'ai essayé ça et ça n'a pas marché. la cellule reçoit toujours le focus. – Sridhar

0

Vous pouvez afficher un div invisible au-dessus de la table qui a annulé l'événement click. Mais pourquoi voudriez-vous une zone de texte qui ressemble à vous pouvez cliquer dessus mais vous ne pouvez pas réellement?

Vous pouvez désactiver les zones de texte à l'intérieur de la table.

Questions connexes