отключить функцию JavaScript

0

У меня есть функция, которая показывает 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");
 });

вот сценарий, иллюстрирующий проблему

  • 0
    Вы пытались отключить обработчик событий?
  • 0
    Я понятия не имею, что это такое.
Показать ещё 2 комментария
Теги:

4 ответа

0
Лучший ответ

Просто проверьте целевой узел. Если это не вход, выполните свой скрипт

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

скрипка

  • 0
    Это прекрасно работает для входов, но есть ли способ отключить все, если виден .green? Я попытался изменить ваш код на event.target.hasClass !== 'green' . Я не учел тот факт, что человек не выбрал вход и просто что-то набрал (случайно).
  • 0
    как, если пользователь не выбрал вход, чтобы не показывать красный
Показать ещё 1 комментарий
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");
});
0

http://jsbin.com/ipIPURav/1/

Проверьте этот URL-адрес, вам просто нужно проверить, что ваш класс виден или нет.

0

Я не уверен, правильно ли я понял вопрос, но, возможно, это то, что вы ищете (это предотвращает появление красного div при <input/> внутри <input/>):

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

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

  • 0
    Спасибо, это тоже отлично работает. Есть ли способ предотвратить появление красного div, если зеленый виден (не только при вводе во ввод)?
  • 2
    Да, это возможно: if($('.green').is(':visible'))return;
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню