2013-12-21 62 views
0

我有一個函數,當用戶鍵入內容時會顯示div,但會干擾輸入的頁面。當使用div保存輸入的頁面部分可見時,我想禁用該腳本,以便當用戶在輸入中鍵入.editPro不顯示()時。禁用JavaScript函數

HTML

<div class="green" style="width:100%;height:100%;position: fixed;display:none;background:green;"> 
    <input type='text' /> 
</div> 
<div class="editPro" style="width:100%;height:100%;position: fixed;display:none;background:red;"></div> 
<div id='edit'>edit</div> 

JAVASCRIPT

$('#edit').click(function (event) { 
    $(".green").show("slow"); 

}); 

$(document).keypress(function (event) { 
    $(".editPro").show("slow"); 
}); 

這裏是一個Fiddle來說明問題

+0

已經youtried斷開事件處理程序? – XORcist

+0

我不知道那是什麼。 – Ando

+0

你的小提琴是空的:( – Praveen

回答

0

只需選中目標節點。如果不輸入,然後執行腳本

$(document).keypress(function (event) { 
    if(event.target.nodeName !== "INPUT"){ 
     $(".editPro").show("slow"); 
    } 
}); 

Fiddle

+0

這對輸入很好,但是有一種方法可以禁用一切,如果.green是可見的?我試着改變你的代碼到'event.target.hasClass!=='green' '我沒有考慮到這個事實,那個人我沒有選擇輸入,只是輸入了一些東西(不小心)。 – Ando

+0

在,如果用戶沒有選擇輸入不顯示紅色 – Ando

+0

你可以試試$(event .TARGET).hasClass( '綠') – Warlock

0

我不知道如果我理解正確的問題,但也許這就是你正在尋找(它可以防止在輸入<input/>時出現紅色div):

$('input').keypress(function (event) { 
    event.stopPropagation(); 
}); 

http://jsfiddle.net/Un8yv/1/

+0

謝謝,這個工程很好。是否有一種方法來防止紅色div出現,如果綠色可見(不僅當輸入輸入時)? – Ando

+2

是的,這是可能的:['if($('.green').is(':visible'))return;'](http://jsfiddle.net/Un8yv/15/ ) –

+0

是的,我只是發現,謝謝! – Ando

0

我已經做在你的代碼,希望一些變化這有助於

試試這個FIDDLE

http://jsfiddle.net/venkat_asman/Un8yv/2/ 
<div class="green" style="width:100%;height:100%;position: fixed;display:none;background:green;z-index:100;"> 
</div> 
<div class="editPro" style="width:100%;height:100%;position:fixed;display:none;background:red;z-index:100;"></div> 
<div id='edit'>edit</div> 
    <input style="z-index:1000;display:none;position:fixed;" type='text' /> 

和JS是

$('#edit').click(function(event){ 
    $(".green").show("slow"); 
    $("input").show(); 
    $('#edit').hide(); 

}); 

$(document).keypress(function(event){ 
    $(".editPro").show("slow"); 
});