我有一个模式弹出窗口,我想在单击“阴影”时将其隐藏,而不在单击内容时将其隐藏。为此,我有:

$('#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>

最佳答案

您需要从children()上的点击处理程序中排除表单输入:

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

10-02 14:57