2013-11-18 4 views
0

У меня есть модальное всплывающее окно, которое я хочу скрыть, когда нажимается «тень», но не при нажатии на содержимое. Для этого у меня есть:Почему я не могу представить свою форму?

$('#shade').click(function(){ 
    $('#shade').fadeOut(); 
}).children().click(function(e){ 
    return false; 
}); 

Проблема в том, у меня есть форма внутри, что я хочу представить, и этот код предотвращает форму от представления, поэтому у меня есть:

$('#shade-form-submit').click(function(){ 
    document.getElementById('shade-form').submit(); 
}); 

Однако это результаты в следующей ошибке в консоли:

[13:07:21.145] TypeError: document.getElementById(...).submit is not a function @ ... 

Что происходит? Для справки, мой <form> тег:

<form action='.' method='post' id='shade-form'> 
    <div> 
    <input type='text' /> 
    </div> 
    <div> 
    <div> 
     <input type='submit' /> 
    </div> 
    </div> 
</form> 
+1

Это странно, что вы используете 'document.getElementById', когда у вас есть jQuery, который может вам помочь. Вы можете полагаться на собственные методы, а не на jQuery для высокопроизводительных задач DOM, но это не так. – MaxArt

+0

@MaxArt Я получил это только потому, что jQuery не работал! – fredley

+0

Вы могли бы добавить это. Что возвращает 'document.getElementById'? Ваша форма, «null» или, может быть, другой элемент, который на самом деле не является формой? – MaxArt

ответ

2

Вы должны исключить форму входа из обработчика щелчка у вас есть на children():

$('#shade') 
    .click(function(){ 
     $('#shade').fadeOut(); 
    }) 
    .children().not(':input').click(function(e){ 
     return false; 
    }); 
+0

Это работает, но у меня есть два 'ввода' на разных глубинах (текстовое поле и кнопка отправки), и я не могу заставить его исключать оба одновременно, только одно или другое. Я поставил структуру DOM в вопросе. Какие-нибудь советы? – fredley

+0

@TomMedley - проверить действительную цель события для типа элемента или использовать делегированный обработчик событий вместо привязки обработчика кликов ко всем 'children()' – ahren

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