2010-03-06 3 views
3

Я работаю над website, где у меня есть главный div. Я хотел, чтобы все в div «S Стр-области, чтобы действовать в качестве связующего звена (нажав на него вызовет представление к форме и перехода на другую страницу), поэтому я добавил к этому div атрибут:Удалить команду «onclick» от ребенка div

<div class="box1" onclick="javascript:document.forms['womenForm'].submit();" ...> 

Everything в этой области shuold ссылается на следующую страницу , кроме выбор HTML, который находится внутри этого div, но должен быть доступен для клика, не переходя на следующую страницу.

Как это может произойти? Я попытался обернуть выбранный элемент div, указав его href="" или onclick="", но все же форма отправлена.

Можно ли разрешить это?

ответ

4

Вы должны остановить бульканье события вверх по иерархии ...

с использованием OnClick атрибутов вы можете сделать это с

onclick="event.cancelBubble=true;if(event.stopPropagation) event.stopPropagation();return false;" на элементе select.

+0

Он действительно работал – Spiderman

1

Во-первых, псевдокод javascript: лишний в вашем коде, потому что вы используете атрибут «onclick».

Предлагаю перейти от встроенного JavaScript и отважиться на более приемлемый мир unobtrusive JavaScript.

В любом случае, что вы хотите сделать, это проверить, что событие не было запущено на элементе <select>. С ненавязчивым JS, что бы что-то вроде этого:

someElement.onclick = function(e) { 
    var target = e ? e.target : event.srcElement; 
    if (!/option|select/i.test(target.nodeName)) { 
     // do stuff. 
    } 
}; 
+0

Это самый простой способ? не могу ли я удалить из дочернего элемента атрибут его верхнего уровня как часть определения HTML? – Spiderman

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