Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: chrome событие click или keypress
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » chrome событие click или keypress

Страниц (2): [1] 2 »
 

1. Panoptik - 07 Февраля, 2012 - 14:53:12 - перейти к сообщению
всем привет!

пол дня мучаюсь над проблемой
вобщем есть окно в fancybox (плагин jquery - модальное окно)
в нем форма с кнопкой сабмит.
CODE (html):
скопировать код в буфер обмена
  1. <form method="post" id="info"  style="margin:0 0 0 20px;" onsubmit="return submit_form();">

на сабмит ставлю обработчик с ajax запросом
CODE (javascript):
скопировать код в буфер обмена
  1. function submit_form() {  
  2.     var data = $('#info').serialize();
  3.     $.post('/includes/jprocessing.php',{'action':'save_char_goods','data':data},function(msg){
  4.         if(msg.match(/успешно/)){
  5.             alert(msg);
  6.             //$.fancybox.close();
  7.             //jQuery.fn.fancybox.close();
  8.             if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {
  9.                 //$('#fancybox-close').click();
  10.                 evt = document.createEvent("HTMLEvents");
  11.                 evt.initEvent("keyPressed","true","true");
  12.                
  13.             } else {
  14.                 document.getElementById('fancybox-close').click();
  15.             }
  16.  
  17.            
  18.         } else {
  19.             alert(msg);
  20.         }
  21.     });
  22.     return false;
  23. }

суть задачи в том, что если ajax возвращает успешный результат - нужно закрыть этот фансибокс. в нем есть кнопка закрыть. вот я и пытаюсь закрыть его имитируя нажатие этой кнопки. и всё бы хорошо - но ХРОМ пишет что у него нет события "клик" для "ссылки". и правильно говорит, потому что по стандарту w3c - событие клик имеют только элементы формы.
вобщем у меня 2 мысли: либо как нибудь с имитировать нажатие этой ссылки, либо имитировать нажатие кнопки "escape" у которой keyCode = 27.

Может кто сталкивался с подобным или имеет другие мысли? Прошу, поделитесь!
2. EuGen - 07 Февраля, 2012 - 15:07:20 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1. $('#fancybox-close').click()

?
Вероятно, подойдет разрушать элемент самостоятельно? (или нужно чтобы сработал обработчик события?)
Сделать через API fancybox'a ? (не вспомню что там именно)
3. garvey - 07 Февраля, 2012 - 15:08:02 - перейти к сообщению
В API написано, что можно закрыть такой командой:
$.fancybox.close();
4. Viper - 07 Февраля, 2012 - 15:12:24 - перейти к сообщению
Если документ iframe то лучше так делать

CODE (javascript):
скопировать код в буфер обмена
  1. var _$ = parent.jQuery;
  2.  
  3. _$('form#info').submit(function(e){
  4.         e.preventDefault();
  5.         var request = _$.ajax({
  6.                 type: 'POST',
  7.                 url: _$(this).prop('action'),
  8.                 data: 'action=save_char_goods&data='+_$(this).serialize()
  9.         }).done(function(response){
  10.                 if (response.test(/успешно/)) {
  11.                         // что-то делаем
  12.                 } else {
  13.                         _$.fancybox.close();
  14.                 }
  15.         });
  16. });


Есно у формы убрать onsubmit. И в action формы прописать куда отправлять.
5. Panoptik - 07 Февраля, 2012 - 15:14:14 - перейти к сообщению
ничего из вышеперечисленного не работает(
EuGen пишет:
$('#fancybox-close').click()
на это не реагирует хром
garvey пишет:
$.fancybox.close();
на это ругается что несуществует такого метода...
перечитал всевозможные статьи и мануалы, везде дают похожие советы, но почему они не работают в хроме?
(Добавление)
Viper пишет:
Если документ iframe то лучше так делать
документ не айфрейм. всё в обычных дивах
6. EuGen - 07 Февраля, 2012 - 15:27:58 - перейти к сообщению
http://stackoverflow[dot]com/questio[dot][dot][dot]ed-google-chrome
(последние комментарии)
?
7. Viper - 07 Февраля, 2012 - 15:39:58 - перейти к сообщению
Panoptik тогда просто через $ обращение.

EuGen Проблема еще и в том что контент не в iframe.
8. Panoptik - 07 Февраля, 2012 - 15:49:52 - перейти к сообщению
сделал вот так:
CODE (javascript):
скопировать код в буфер обмена
  1.  function submit_form() {  
  2.     var data = $('#info').serialize();
  3.     $.post('/includes/jprocessing.php',{'action':'save_char_goods','data':data},function(msg){
  4.         if(msg.match(/успешно/)){
  5.             alert(msg);
  6.             $.fancybox.close();
  7.         } else {
  8.             alert(msg);
  9.         }
  10.     });
  11.     return false;
  12. }

вот что написал хром Uncaught TypeError: Cannot call method 'close' of undefined
(Добавление)
попробовал вариант с iframe, поставил тип iframe - но вылезла кучка проблем , таких как отсутствие стилей в подгружаемом файле... вобщем на досуге еще попробую. всем спасибо за советы
9. tuareg - 07 Февраля, 2012 - 19:32:23 - перейти к сообщению
У Вас в чем-то другом проблема. Вот простой пример ХРОМ нормально эмулирует событие click(). http://jsfiddle[dot]net/tuareg/sm7mE/2/ .
10. IllusionMH - 08 Февраля, 2012 - 00:41:55 - перейти к сообщению
Panoptik, вот что выдал гугл

upd. ай Недовольство, огорчение дописал после ответа. перенес вниз
11. tuareg - 08 Февраля, 2012 - 00:58:33 - перейти к сообщению
Попробуйте (я уверен на 90% Улыбка ) использовать $.Deferred().
12. IllusionMH - 08 Февраля, 2012 - 01:17:29 - перейти к сообщению
tuareg, если назначить свое событие (ну там алерт и прочее) - все срабатывает, но если не назначать - просто ссылка не нажимается(не происходит переход на другую страницу по ссылке).
Пробовал на этом коде: цвет меняется, перехода по ссылке - нет.
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <a href="http://forum.php.su" id="clickMe">forum</a>
  3. <script src="jquery-1.7.1.js"></script>
  4. <script>
  5.   $("#clickMe").trigger("click").css("color", "red");
  6.   //пробовал еще и эти варианты
  7.   //$("#clickMe").css("color", "red").trigger("click");
  8.   //$("#clickMe").click().css("color", "red");
  9.   //$("#clickMe").click(function() {return true;}).click().css("color", "green");
  10. </script>
  11.  

Еще пробовал назначать функцию которая только return
13. tuareg - 08 Февраля, 2012 - 01:26:02 - перейти к сообщению
А Вы поняли что вообще написали и что хотите сделать??? Улыбка (не обижайтесь)
Взял первый пример
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $("#clickMe").trigger("click").css("color", "red");
  3.  

Юзер нажал на #clickMe страница перегрузилась. И css("color", "red"); просто не сработал.
14. IllusionMH - 08 Февраля, 2012 - 01:45:49 - перейти к сообщению
tuareg, в том то и дело, что знаю что я писал. Я не обижаюсь, т.к. видимо вы пропустили строку.
IllusionMH пишет:
Пробовал на этом коде: цвет меняется, перехода по ссылке - нет.


Тестировал в html файле с таким содержимым.
CODE (html):
скопировать код в буфер обмена
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.   <meta charset=utf-8>
  5.   <title>A simple HTML5 page layout</title>
  6. </head>
  7. <body>
  8. <a href="http://forum.php.su" id="clickMe">forum</a>
  9. <script src="jquery-1.7.1.js"></script>
  10. <script>
  11.   $("#clickMe").trigger("click").css("color", "red");
  12.   //пробовал еще и эти варианты
  13.   //$("#clickMe").css("color", "red").trigger("click");
  14.   //$("#clickMe").click().css("color", "red");
  15.   //$("#clickMe").click(function() {return true;}).click().css("color", "green");
  16. </script>
  17. </body>

Opera 12, FF 10, IE9, GH16
Результат: ссылка красная, а форума не видать.

P.S. Проблема может быть из-за того, что я сижу через прокси(прописан во всех браузерах, если клацнуть на ссыль - переходит)?
(Добавление)
Залил на хостинг, пробовал с тачки с прямым доступом к иннету - тот же результат.
15. tuareg - 08 Февраля, 2012 - 02:06:03 - перейти к сообщению
Сейчас понял. Вот код
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $("#clickMe").click(function(){
  3.                 location.href=this.href;
  4. }).
  5. css("color", "red").
  6. trigger("click");
  7.  

 

Powered by ExBB FM 1.0 RC1