2

对不起,糟糕的标题。

我有一个可以在每个页面上弹出的联系表。用户可以按 Esc 关闭表单。工作正常。

<form id="contactForm" method="post" class="open" style="display: block;">
<input id="send" type="hidden" name="send">
<input type="hidden" value="/downloads/" name="_wp_http_referer">
<div id="main">
<input type="hidden" value="mailAction" name="action">
<a class="close" href="#">x</a>
</form>

    jQuery('a.close').click( function(e) {
      e.preventDefault();   
        jQuery('#overlay').fadeOut( 'slow');
        jQuery('#contactForm').removeClass('open').slideUp();
                                                                        });
    // When the "Escape" key is pressed, close the form
    jQuery('#contactForm').keydown( function( event ) {
        if ( event.which == 27 ) {
            jQuery('#contactForm a.close').trigger('click');
        }
    } );

好的。现在在其他几个页面上,我有另一个下拉 div,它不是表单。同样,用户可以按 Esc 关闭表单。为此,我不得不将 keyup 绑定到文档:

jQuery(document).keyup( function( event ) {
    if ( event.which == 27 ) {
        if( jQuery('#modalpopup').is(':visible') )
          jQuery('#modalpopup .close').trigger('click');
        else if ( jQuery('#myplayer').is(':visible')  )
          jQuery('#myplayer .close').trigger('click');
        }
    } );

这些页面上发生的情况是,keyup 永远不会“冒泡”到#contactForm。我错过了什么?有没有办法让第二个处理程序“传递”keyup 事件,以便它冒泡到#contactForm?

或者我是否需要将这些其他 div 包装在一个虚拟形式中,以便它们可以拥有独立的 keyup 事件处理程序?

TIA,

---JC

4

0 回答 0