2016-02-01 3 views
1

Просьба помочь мне : селектор кнопок для развязывания событий со всех кнопок моего проекта MVC Spring работает отлично в хроме, но не в firefox и Internet explorer.: селектор кнопок не работает в firefox и т. Д.

Моя задача - отвязать событие от всех кнопок в проекте. Код выглядит следующим образом:

var j$ = jQuery.noConflict(); 
 
\t 
 
j$(document).ready(function() { 
 
     jQuery(window).bind(
 
\t \t  "beforeunload", 
 
\t \t  function() { 
 
\t \t  return confirm("do you want to exit?" , "true"); 
 
\t \t  } 
 
\t \t); 
 
\t \t 
 
\t \t jQuery(":button").on('click', function(){ 
 
      jQuery(window).unbind('beforeunload') 
 
     }); 
 
\t \t 
 
\t \t jQuery('a').on('click', function(){ 
 
     jQuery(window).unbind('beforeunload') 
 
    }); 
 
\t 
 
\t 
 
jQuery(window).bind('keydown keyup', function(e) { 
 
    if(e.which === 116) { 
 
     jQuery(window).unbind('beforeunload'); 
 
    } 
 
    if(e.which === 82 && e.ctrlKey) { 
 
     jQuery(window).unbind('beforeunload'); 
 
    } 
 
}); 
 

 

 
jQuery(window).mousedown(function(e){ 
 
    if(e.button == 2) { 
 
     jQuery(window).unbind('beforeunload'); 
 
    } 
 
    else{ 
 
    jQuery(window).bind('beforeunload'); 
 
    } 
 
    }); 
 

 
    
 
jQuery("form").submit(function(){ 
 
    jQuery(window).unbind('beforeunload') 
 
    }); \t 
 
    
 
    
 
});

Теперь это работает отлично в хром, но не в IE и Firefox. Пожалуйста, помогите мне исправить этот код или предложить мне другой способ отменить событие со всех кнопок. Большое спасибо заранее

Привет, я только что получил актуальную проблему. Проблема связана с типом элемента ввода, который является кнопкой, что создает проблему. Если мы установим тип ввода кнопки «отправить», он отлично работает в Firefox и других. Но если тип ввода кнопки установлен на «кнопка», то это не сработает. Я имею в виду это. Пожалуйста, помогите мне. Как это исправить. Заранее спасибо.

+0

Не могли бы вы загрузить свой HTML-код тоже? –

+0

Вы можете найти и скачать код по адресу: http://bit.ly/1VBEzjD и вы можете проверить это на: http://goo.gl/CcYlAh В хроме, он выполнив код jQuery (": button"). on ('click', function() { jQuery (window) .unbind ('beforeunload') }); и не нажимает на кнопку. Но в firefox он дает предупреждение, а затем выполняет этот вышеприведенный код, чтобы отменить событие beforeunload. –

+0

У меня только что возникла проблема. Проблема связана с типом входного элемента, т.е. который создает проблему. Если мы установим тип ввода кнопки «отправить», он отлично работает в Firefox и других. Но если тип ввода кнопки установлен на «кнопка», то это не сработает. Я имею в виду эту кнопку to . Пожалуйста, помогите мне. Как это исправить. Заранее спасибо. –

ответ

1

его работы в светлячок ..............

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    <html> 
     <head> 
     <title></title> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 

    <script> 
    $(document).ready(function(){ 
     $("button").click(function(){ 
     alert("Hello"); 
     }); 
    }); 
    </script> 

     </head> 
     <body> 
     <button> hello</button> 
     </body> 
    </html> 
3

О, теперь я вижу, что вы имеете в виду. Проблема заключалась в том, что вам была назначена кнопка disableButton - функция кнопки (внутри HTML) ... и THEN с Java Script (после того, как документ был готов) назначил другую функцию [jQuery (": button") .он ('нажмите', ...) ... отвязать()]

проблема заключается в вызове порядка: Первый disableButton и чем UNBIND(). И желаемое поведение достигается только в обратном порядке.

Мое предложение состояло в том, чтобы использовать submit (как вы сказали ранее, почти без js) или добавить j $ (this) .unbind ("beforeunload"); к disableButton() (он работает в Firefox и то есть тоже :-)):

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="content-type" content="text/html; charset=windows-1252"> 
     <script type="text/javascript" src="demo-Dateien/jquery.js"></script> 
     <script type="text/javascript"> 
      function disableButton() { 
       j$(this).unbind("beforeunload"); 
       document.form.method="GET"; 
       document.form.but.disabled = true; 
       document.form.submit(); 
      } 

      var j$ = jQuery.noConflict(); 

      j$(document).ready(function() { 
        j$(window).bind(
         "beforeunload", 
         function() { 
          return confirm("do you want to exit?" , "true"); 
         } 
        ); 
      }); 
     </script> 
    </head> 
    <body> 
     <form name="form" action="process.jsp" method="post"> 
      <label>First Name</label> 
      <input name="fname" type="text"> 
      <br> 
      <label>Last Name</label> 
      <input name="lname" type="text"> 
      <br> 
      <input class="Button" name="but" value="Next" onclick="javascript:disableButton()" type="button"> 
     </form> 
    </body> 
</html> 
+1

Большое спасибо за справку за вашу помощь, но в нашем проекте на каждой другой странице jsp есть кнопка, подобная этой, и функция disableButton(), прикрепленная к ней. Поэтому по вашему отвечу мне придется менять каждую страницу jsp проекта. Это довольно сложная задача. Есть ли другой выход? И сэр, еще один запрос, он отлично работает в хроме, то почему он не работает нормально в ie и firefox? –

+0

Привет, [* на практике реализации браузера отличаются от стандартов и друг от друга ... В некоторых случаях два браузера могут реализовывать функцию, но с другим поведением *] (https://en.wikipedia.org/wiki/JavaScript # Compatibility_considerations). Так что, возможно, хром не интерпретирует *** js.submit() *** как покидающий сайт. Если вы используете одну и ту же функцию на нескольких страницах, вы можете передать ее в отдельный файл .js, а не просто включать ее (например, с jquery). [Копировать код с запахом: -)] (https://en.wikipedia.org/wiki/Code_smell) –