Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #61 (permalink)  
Старый 17.09.2012, 11:03
Аспирант
Отправить личное сообщение для zevilz Посмотреть профиль Найти все сообщения от zevilz
 
Регистрация: 24.05.2012
Сообщений: 93

Принцип понял, но не понял как сделать. Переделал свой скрипт:
$(document).ready(function() {

      // Сворачиваем панель
  $("#close").click(function(){
    $("div#panel").slideUp("slow");
    $("#toggle a").toggle();
  });

      // Сворачиваем панель при снятии фокуса с #toppanel
  $("#toppanel").blur(function(){
    $("*").not("#panel input").focus(function(){
      $("div#panel").slideUp("slow");
      $("#toggle a").toggle();
    });
  });

      // Сворачиваем панель при снятии фокуса с input
  $("#toppanel input").blur(function(){
    $("*").not("#panel input").focus(function(){
      $("div#panel").slideUp("slow");
      $("#toggle a").toggle();
    });
  });

      // Разворачиваем панель
  $("#open").click(function(){
    $("div#panel").slideDown("slow");
    $("#toggle a").toggle();
  });

});

Сдесь добавил следующее:
1.При снятии фокуса с панели панель сворачивается. Но только если фокус получает не input на этой панели. На панели 4 инпута: для логина, пароля, чекбокс и submit.
2. При снятии фокуса с любого инпута панель сворачивается. Но если фокус получает не другой инпут на этой панели.

При снятии фокуса с панели она закрывается нормально, кнопка закрытия меняет свое содержимое. Но при повторном открытии при первом и втором клике выполняется только $("#toggle a").toggle();. И только при третьем клике панель открывается. То же самое происходит и при снятии фокуса с инпутов. И заметил еще косяк: если после фокуса на инпутах кликнуть на чекбокс, то панель закроется, а если наоборот, то панель не закроется.

Может кто вкурсе, почему происходит такая хрень и как исправить?
Ответить с цитированием
  #62 (permalink)  
Старый 17.09.2012, 12:47
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от cyber
Работает в ие 6+ без функции _() (должно ,не пробывал), в ие8+ точно работает
в ИЕ6-7 вдруг внезапно появился Selectors API ???

Сообщение от cyber
return document.querySelectorAll(selector)[0];
интересный способ, а что одиночный селектор отменили?
return document.querySelector(selector);
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #63 (permalink)  
Старый 17.09.2012, 13:30
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от devote Посмотреть сообщение
в ИЕ6-7 вдруг внезапно появился Selectors API ???


интересный способ, а что одиночный селектор отменили?
return document.querySelector(selector);
что бы не писать каждый раз getElementById(), ClassName я просто (для себя сделал функцию)
и этот коммент там не зря!
Цитата:
//функия для удобства написания примера, копипастить не нужно
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #64 (permalink)  
Старый 17.09.2012, 13:34
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от zevilz Посмотреть сообщение
Принцип понял, но не понял как сделать. Переделал свой скрипт:
$(document).ready(function() {

      // Сворачиваем панель
  $("#close").click(function(){
    $("div#panel").slideUp("slow");
    $("#toggle a").toggle();
  });

      // Сворачиваем панель при снятии фокуса с #toppanel
  $("#toppanel").blur(function(){
    $("*").not("#panel input").focus(function(){
      $("div#panel").slideUp("slow");
      $("#toggle a").toggle();
    });
  });

      // Сворачиваем панель при снятии фокуса с input
  $("#toppanel input").blur(function(){
    $("*").not("#panel input").focus(function(){
      $("div#panel").slideUp("slow");
      $("#toggle a").toggle();
    });
  });

      // Разворачиваем панель
  $("#open").click(function(){
    $("div#panel").slideDown("slow");
    $("#toggle a").toggle();
  });

});

Сдесь добавил следующее:
1.При снятии фокуса с панели панель сворачивается. Но только если фокус получает не input на этой панели. На панели 4 инпута: для логина, пароля, чекбокс и submit.
2. При снятии фокуса с любого инпута панель сворачивается. Но если фокус получает не другой инпут на этой панели.

При снятии фокуса с панели она закрывается нормально, кнопка закрытия меняет свое содержимое. Но при повторном открытии при первом и втором клике выполняется только $("#toggle a").toggle();. И только при третьем клике панель открывается. То же самое происходит и при снятии фокуса с инпутов. И заметил еще косяк: если после фокуса на инпутах кликнуть на чекбокс, то панель закроется, а если наоборот, то панель не закроется.

Может кто вкурсе, почему происходит такая хрень и как исправить?
этот код поломается, если на панель добавить textarea или кнопку button и вы его забудете добавить...
Короче решение хреновое плохое
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #65 (permalink)  
Старый 17.09.2012, 14:07
Аспирант
Отправить личное сообщение для zevilz Посмотреть профиль Найти все сообщения от zevilz
 
Регистрация: 24.05.2012
Сообщений: 93

я ничего там переделывать не буду. Заново не хочется скрипт писать. А мой работает, но с небольшими косяками. Мне всего лишь надо как то их исправить
Ответить с цитированием
  #66 (permalink)  
Старый 17.09.2012, 14:20
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

я сказал, а вы как хотите (мне все равно!)
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #67 (permalink)  
Старый 18.09.2012, 06:15
Аспирант
Отправить личное сообщение для zevilz Посмотреть профиль Найти все сообщения от zevilz
 
Регистрация: 24.05.2012
Сообщений: 93

Если следующее в консоли
$("a#open:visible");

выдает пустой результат
[]
, то как это прописать в условии вместо звездочек:
if ("a#open:visible" == ***) {}
?
"", "[]", null, false не срабатывают

Последний раз редактировалось zevilz, 18.09.2012 в 06:18.
Ответить с цитированием
  #68 (permalink)  
Старый 18.09.2012, 06:26
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

if ( $("a#open:visible").length === 0 ) {}
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #69 (permalink)  
Старый 18.09.2012, 17:41
Аспирант
Отправить личное сообщение для zevilz Посмотреть профиль Найти все сообщения от zevilz
 
Регистрация: 24.05.2012
Сообщений: 93

Сообщение от devote Посмотреть сообщение
if ( $("a#open:visible").length === 0 ) {}
Спасибо, как раз именно то, что нужно. Только один знак "=" лишний.
Ответить с цитированием
  #70 (permalink)  
Старый 18.09.2012, 17:48
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от zevilz Посмотреть сообщение
Спасибо, как раз именно то, что нужно. Только один знак "=" лишний.
Нет не лишний
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с панелью вкладок в окне Eugent ExtJS 0 27.07.2012 15:19
Проблема с обработкой ескольких .hover() anocean jQuery 3 15.06.2012 22:43
Проблема с Popup окном vovuslik jQuery 5 12.06.2010 16:12
Проблема с дизайном после отправки xmlhttprequest, Проблема с дизайном после отправки cyberx AJAX и COMET 3 01.05.2010 17:07
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47