Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119

Открыть новую тему     Написать ответ в эту тему

KrgUser

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Цитата:
Где вы там перегрузку увидели?
"Перегрузка" тут в обычном смысле, а не ООП
Цитата:
Напоминает, что внутри объект jquery
Ну, хоть в этом какая-то логика
 
Спасибо

Всего записей: 86 | Зарегистр. 26-04-2011 | Отправлено: 08:13 20-07-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KrgUser

Цитата:
"Перегрузка" тут в обычном смысле, а не ООП

нет тут никакого переопределения. jQuery может использовать $, но $ и $list - разные вещи.

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 08:15 20-07-2016
KrgUser

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А как обрабатывается ситуация, когда в коде, подобном
Код:
$("#SomeField").SomeAction...
поле #SomeField задан через параметр, например
Код:
var FieldName ="#SomeField"
? Надо писать что-то вроде
Код:
$(FieldName).SomeAction...
(хотя сомневаюсь в этом варианте)?
 
Спасибо

Всего записей: 86 | Зарегистр. 26-04-2011 | Отправлено: 12:07 20-07-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KrgUser

Цитата:
 Надо писать что-то вроде

Да

Цитата:
хотя сомневаюсь в этом варианте

Проще же попробовать, чем ждать ответ.

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 12:31 20-07-2016
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть кнопка, по которой выполняется запрос к серверу через аякс. При загрузке  страницы пытаюсь на неё кликнуть, чтобы запрос выполнился и один из дивов обновился.  

Код:
$(document).ready(function(){
    $('#edit-panes-quotes-quote-button').click(function(){
         alert('click is here');
  });    
 
    $("#edit-panes-quotes-quote-button").click();
    //$('#edit-panes-quotes-quote-button').trigger('click');
 });  

 
Клик проходит - это я вижу, алерт туда прицепил - но сам запрос не идет на сервер.
В чем может быть причина?

Всего записей: 1633 | Зарегистр. 08-10-2011 | Отправлено: 10:32 19-08-2016 | Исправлено: xerpal, 10:50 19-08-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal
только

Цитата:
$('#edit-panes-quotes-quote-button').trigger('click');

 

Цитата:
но сам запрос не идет на сервер

ну, как бы, неплохо увидеть и тот код. плюс смотреть консоль в браузере на наличие сообщений.

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 10:35 19-08-2016
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
ну, как бы, неплохо увидеть и тот код.  

Какой именно? Поясню что происходит - по нажатию на кнопку идет запрос на скрипт на сервере, по которому обновляется один из дивов. Я на сервере  добавил левый код - и он виден, когда я сам нажимаю на кнопку. А вот когда программно - запрос на сервер не идет.  
 

Цитата:
плюс смотреть консоль в браузере на наличие сообщений.

В Chrome ниче не вижу - может не туда смотрю. Но повторюсь - alert то вылазит, значит клик есть по кнопке.  
 
Ещё одно решение  - обновить один раз страницу, но не выходит - зацикливается обновление. Это вообще возможно - обновить страницу только ОДИН РАЗ скриптом?

Всего записей: 1633 | Зарегистр. 08-10-2011 | Отправлено: 10:49 19-08-2016 | Исправлено: xerpal, 10:51 19-08-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal

Цитата:
Какой именно?  

который делает ajax запрос.

Цитата:
Но повторюсь - alert то вылазит, значит клик есть по кнопке.

но ajax то запрос не идет. скорее всего попытка на другой домен, тогда будет сообщение в консоли браузера о кроссдоменном запросе.
 

Цитата:
Это вообще возможно - обновить страницу только ОДИН РАЗ скриптом?

можно, добавлять метку, что обновление было - в куки или GET аргумент в адресе (то, что идет после знака вопроса).  
 
 

Цитата:
Я на сервере  добавил левый код - и он виден, когда я сам нажимаю на кнопку. А вот когда программно - запрос на сервер не идет.  

я не вижу как реализован ваш ajax запрос, на что он реагирует, поэтому и сказать не могу ничего

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 10:53 19-08-2016 | Исправлено: Mavrikii, 10:54 19-08-2016
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
можно, добавлять метку, что обновление было - в куки или GET аргумент в адресе (то, что идет после знака вопроса).  

Оба-на, и правда. Про GET реальный вариант. А как это лучше сделать - например как добавить &second=1? Нужно как понимаю просто при загрузке отправить на текущий адрес?second=1 и поставить проверку, чтобы когда second=1 не отправлять?  
 

Цитата:
который делает ajax запрос.

Это я в одной из CMS - там jquery вшит, и запрос идет стандартными методами этой системы на сервер - отправляются эта форма нажатием по аяксу нажатием на кнопку. Но всю форму отправлять нельзя - опять же зацикливание идет.  
 

Цитата:
но ajax то запрос не идет. скорее всего попытка на другой домен, тогда будет сообщение в консоли браузера о кроссдоменном запросе.

Нет, почему - см выше

Всего записей: 1633 | Зарегистр. 08-10-2011 | Отправлено: 11:01 19-08-2016 | Исправлено: xerpal, 11:03 19-08-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal
добавлять можно что угодно и как хочется.
 

Цитата:
там jquery вшит, и запрос идет стандартными методами этой системы на сервер - отправляются эта форма нажатием по аяксу нажатием на кнопку.  

значит что то упускаете. например вызов идет не при нажатии на кнопку, а событие идет выше и там перехватывается. Не факт (не помню), что запуск триггер пузырит событие.

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 11:06 19-08-2016
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
значит что то упускаете. например вызов идет не при нажатии на кнопку, а событие идет выше и там перехватывается. Не факт (не помню), что запуск триггер пузырит событие.

ну как можно упускать? Ну нажатие на кнопку то идет.  

Код:
 
 
<input type="submit" id="edit-panes-quotes-quote-button" name="op" value="click for shipping" class="form-submit ajax-processed">
 
 

Там и спецкласс как видите привязан чтобы аякс-запрос шел.  
 
Ввообщем вы меня осенили с GET-параметром - я так и сделал, все заработало. Непонятно почему не работало по клику - думаю просто по клику запрос самостоятельно не идет, форма е должна отправляться, а она не отправляется. Может это ограничение в самом jQuery?

Всего записей: 1633 | Зарегистр. 08-10-2011 | Отправлено: 11:23 19-08-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal

Цитата:
Может это ограничение в самом jQuery?

не думаю. там может быть на какое то другое событие привязано.  

Цитата:
Ну нажатие на кнопку то идет.

когда вы на что то жмете, событие нажатия идет от элемента к его родителю и выше, если не остановлено. мне нужно видеть и попробовать, чтобы сказать в чем причина.

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 11:25 19-08-2016
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
когда вы на что то жмете, событие нажатия идет от элемента к его родителю и выше, если не остановлено. мне нужно видеть и попробовать, чтобы сказать в чем причина.

Ну я привел код кнопки - обычный submit как видите, по его нажатию отправляется форма на сервер.  
   Форму также можно отправить на сервер через $('#name-form').submit(); - я проверял. А по клику нельзя - сдается мне это ограничение именно системы.  
 
Добавлено:
Mavrikii

Цитата:
мне нужно видеть и попробовать, чтобы сказать в чем причина.

Нет, я конечно могу все предоставить, если хотите проверить. CMS Drupal7 нулевый ставите, пару стандартных модулей и тд, дальше могу написать, че куда поставить.

Всего записей: 1633 | Зарегистр. 08-10-2011 | Отправлено: 11:57 19-08-2016 | Исправлено: xerpal, 12:03 19-08-2016
BennyBlanco



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
<iframe></iframe>
 
<div class="deb">
<iframe></iframe>
</div>
 
 
 
<div id="mess"></div>
 
<script>
var monitor = setInterval(function(){
    var elem = document.activeElement;
    if(document.activeElement && document.activeElement.tagName == 'IFRAME'){
        mess.innerHTML = 'Clicked';
        clearInterval(monitor);
    }
}, 100);
 
</script>

 
Как сделать чтобы скрипт срабатывал только на iframe который обернут в class="deb" ?

Всего записей: 1995 | Зарегистр. 17-09-2009 | Отправлено: 14:14 03-11-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BennyBlanco
Берете родителя .parentNode и проверяете наличие класса. Если класс один, то просто .className == 'имя_класса'
Либо, что лучше, как тут - http://stackoverflow.com/questions/5085567/hasclass-with-javascript
Если родитель может быть далеко, то в цикле.
 
https://learn.javascript.ru/traversing-dom

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 16:29 03-11-2016 | Исправлено: Mavrikii, 16:31 03-11-2016
BennyBlanco



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
Берете родителя .parentNode и проверяете наличие класса. Если класс один, то просто .className == 'имя_класса'

Спасибо.
 
 if(document.activeElement && document.activeElement.tagName == 'IFRAME' && document.activeElement.parentNode.className == 'deb')

Код:
 
<div class="deb">  
 <iframe></iframe>  
 </div>
 

 
Так работает.  
 
А если так:

Код:
 
<div class="deb">  
<div>  
<div>  
<div>  
 <iframe></iframe>  
 </div>
 </div>
 </div>
</div>
 

то не работает.  

Цитата:
Если родитель может быть далеко, то в цикле.

Это как?

Всего записей: 1995 | Зарегистр. 17-09-2009 | Отправлено: 17:44 03-11-2016 | Исправлено: BennyBlanco, 18:00 03-11-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BennyBlanco

Цитата:
Это как?  

ну здрасти.. поднимаемся вверх до тех пор, пока не нашли элемент с нужным классом или не достигли body. самим разве не интересно написать?

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 20:53 03-11-2016
BennyBlanco



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
самим разве не интересно написать?

Не знаю как

Всего записей: 1995 | Зарегистр. 17-09-2009 | Отправлено: 22:56 03-11-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BennyBlanco

Цитата:
Не знаю как  

вот, навскидку, простое решение

Код:
Element.prototype.hasClass = function(name) {
  return (" " + this.className + " ").replace(/[\n\t]/g, " ").indexOf(" " + name + " ") > -1;
}
Element.prototype.parentHasClass = function(name) {
  var el = this.parentNode;
  while(!el.hasClass(name))
  {
    if (el.tagName == 'BODY') return false;
    el = el.parentNode;
  }
  return true;
}

 
все, document.activeElement.parentHasClass('deb') решит проблемы.
document.activeElement.hasClass('deb') проверит есть ли класс у конкретного элемента.

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 23:05 03-11-2016
BennyBlanco



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
все, document.activeElement.parentHasClass('deb') решит проблемы.

 
Сюда?
 
 if(document.activeElement && document.activeElement.tagName == 'IFRAME' && document.activeElement.parentHasClass('deb'))

Всего записей: 1995 | Зарегистр. 17-09-2009 | Отправлено: 23:19 03-11-2016
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119

Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru