У меня есть функция, которая показывает div, когда пользователь вводит что-то, но он мешает странице, где у меня есть вход. Я хотел бы отключить скрипт, когда часть страницы с div, содержащая входы, видна так, что когда пользователь вводит ввод, функция.editPro не показывает().
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");
});
вот сценарий, иллюстрирующий проблему
Просто проверьте целевой узел. Если это не вход, выполните свой скрипт
$(document).keypress(function (event) {
if(event.target.nodeName !== "INPUT"){
$(".editPro").show("slow");
}
});
event.target.hasClass !== 'green'
. Я не учел тот факт, что человек не выбрал вход и просто что-то набрал (случайно).
Я сделал некоторые изменения в коде, надеюсь, что это поможет
попробуйте этот 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");
});
Проверьте этот URL-адрес, вам просто нужно проверить, что ваш класс виден или нет.
Я не уверен, правильно ли я понял вопрос, но, возможно, это то, что вы ищете (это предотвращает появление красного div при <input/>
внутри <input/>
):
$('input').keypress(function (event) {
event.stopPropagation();
});
if($('.green').is(':visible'))return;