2009-09-23 1 views
0

Я добавил JQuery OnClick EventHandler к столу следующимотменить OnClick событие на столе с помощью 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. 

} 

Как отменить событие щелчка на столе?

+0

Есть ли редактируемый элемент управления внутри ячейки, который получает фокус, или есть больше, чем вы упоминаете? –

+0

У меня есть текстовое поле внутри ячейки. текстовое поле получает фокус, который я хотел бы отменить. Также я добавил keydown, keypress, dblclick, keyup для обработки навигации по таблицам. – Sridhar

ответ

2

Похоже, вы вызываете preventDefault() на неправильном объекте. Обработчик принимает параметр «событие», но вы используете «e».

Так что ваш код должен быть:


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

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

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

Я предполагаю, что Вы могли бы хотеть что-то больше, как это тогда:


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

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

Я пробовал, и это не сработало. ячейка по-прежнему получает фокус. – Sridhar

0

Вы можете отобразить невидимый DIV на верхней части таблицы, устраняющий событие щелчка. Но почему вы хотите, чтобы текстовое поле выглядело так, как будто вы можете щелкнуть по нему, но на самом деле не можете?

Вы можете отключить текстовые поля внутри таблицы.

Смежные вопросы