2011-08-01 36 views
2

我有一個簡單的jQuery功能,例如:的jQuery的preventDefault上輸入字段

$(function() { 
    $('div.dropdown-menu').click(function() { 
     var $this = $(this); 
     $this.toggleClass('active'); 
     $('.menu').toggle(); 
    }); 
}); 

這個做工精良,顯示和隱藏下拉。菜單這是目前只是一個無序列表列表按鈕。

但是我想在某個頁面上的下拉菜單中添加一個登錄表單,但是在這種形式下點擊輸入字段會導致菜單關閉(隱藏)。

如何更改我的代碼,以防止這種品行

+0

爲根本的設計實踐,不應該你的菜單有click事件句柄?對我來說,整個菜單都是關閉菜單按鈕是沒有意義的。例如http://jsfiddle.net/vCzpP/ –

+0

你說得對,doens沒有意義:)謝謝 – Devon667

回答

3

您可以使用event.target來引用點擊的元素並檢查它是否是一個表單字段與is()方法:

$(function() { 
    $('div.dropdown-menu').click(function(event) { 
     if ($(event.target).is(":input")) { 
      return; 
     } 
     $(this).toggleClass('active'); 
     $('.menu').toggle(); 
    }); 
}); 
0

試試這個:

$('#input_field').click(function(){ return false; }) 
0

試試這個

$(function() { 
    $('div.dropdown-menu').click(function(e) { 
     if ($(e.target).is(":input")) { 
      return false; 
     } 
     $(this).toggleClass('active'); 
     $('.menu').toggle(); 
    }); 
});