[JavaScript, AJAX] Задай вопрос, получи ответ

Discussion in 'PHP' started by banned, 9 Jun 2007.

Thread Status:
Not open for further replies.
  1. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    Появилась необходимость определять, когда человек вставляет текст в текстовое поле.
    По сути - событие onPaste, срабатывает непосредственно перед вставкой текста. Но не работает в Опере. Находил ли кто-нибудь аналоги для оперы?
    Требуется именно отследить вставленный текст.
     
  2. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    onChange() не подходит?
     
  3. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    R0nin, нет. onChange сработает только при потере фокуса.
    keyDown тоже не подойдёт, т.к. вставку можно осуществить через "вставить" в контекстном меню.
     
  4. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    http://stackoverflow.com/questions/6305146/solution-for-onpaste-in-opera-11-11
     
  5. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    Isis, отследить ctrl+v и shift+ins можно и меньшим кодом. Тем не менее, проблему вставки из контекстного меню это не решит.
     
  6. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    Вот, пожалуйста. Проверено, работает и не только в Opera
    PHP:
    var LastState;
    function 
    gCheck() {
        
    document.getElementById('t');
        if (
    e) {
            if (
    e.value.length && LastState != e.value) {
                
    alert("Произошло изминение:" e.value " Размер текста:" e.value.length);
                
    LastState e.value;
            } else {
                if (
    e.value.length == && LastState != e.value) {
                
    LastState 0;
                }
            }
        }
        
    setTimeout("gCheck()"1000);    
    }
    Использовать так:
    PHP:
    <input type="text" onFocus="gCheck()" id="t">

    При каждом изменении состояния текстого поля с ID t выполнится следующий код:
    PHP:
    alert("Произошло изминение:" e.value " Размер текста:" e.value.length);
    LastState e.value;
     
    #3346 R0nin, 29 Feb 2012
    Last edited: 29 Feb 2012
  7. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    R0nin, благодарю за внимание к проблеме.
    Тем не менее, этот вариант рассматривался при первых попытках реализации нужного алгоритма. И отмёлся очень быстро по ряду причин:
    - память. Т.к. использоваться это должно в wysiwyg, память будет довольно быстро кушаться.
    - Интервал. Изменения должны отлавливаться "на лету", т.е. при вставке срабатывает парсер, чистящий код от мусора. Интервал придётся уменьшать - память будет кушаться ещё быстрее.
    - это всё же костыль. Я надеялся найти хоть немного похожий на onPaste обработчик, который умеет и callback запускать. Поиски ни к чему не привели.

    ps: расковырял tinyMCE - там есть подобный парсер, в аналогичных условиях также не срабатывает (в опере при вставке из контекстного меню). Видимо, придётся оставить так до тех пор, пока разрабы в опере образумятся.


    pps: кстати, R0nin, если уж использовать подобный подход (отслеживать изменения) - есть событие input . Возникает при любом изменении текста. Но изменение текста может происходить и простым вводом с клавиатуры. И вставкой изображений, таблиц и прочих объектов.
     
    #3347 FindeR, 29 Feb 2012
    Last edited: 1 Mar 2012
  8. Metho

    Metho New Member

    Joined:
    18 Nov 2011
    Messages:
    182
    Likes Received:
    2
    Reputations:
    0
    http://maikasupercool.sytes.net/cont.html
    Что добавить в js что бы видео тоже затемнялось?
     
  9. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    Чтобы видео затемнялось или чтоб страница затемнилось? Для этого создается еще один слой, настраивается z-index. Z-index темного слоя должен быть выше чем то что хотите скрыть, и ниже чем то что должно изображаться. Ответ не однозначный - добавить нужно как JS так и CSS.
     
  10. xvtel

    xvtel New Member

    Joined:
    2 Mar 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Как на страничке разместить GETзапрос к другому сайту и не переходя на него, получить с него куки?
     
  11. Metho

    Metho New Member

    Joined:
    18 Nov 2011
    Messages:
    182
    Likes Received:
    2
    Reputations:
    0
    Так слой есть, а не затемняется только видео :(


    как здесь закрыта менюшка и по краям вместо белого сделан темный цвет по краям?( точнее как вставить код :body
    {
    background-color:#6F605A;
    font-family:Arial, Helvetica, sans-serif;
    padding:0;
    font-size:12px;
    margin:0px auto auto auto;
    color:#000000;
    } из стайла в js. Я пробовал в контент после оверфловхиден пихать, не работает. подскажите плс.
    Все сделал, но меню и цвета по бокам не получается :(

    http://poiskpolovinkiyeah.sytes.net/

    Спасибо :)
     
    #3351 Metho, 3 Mar 2012
    Last edited: 4 Mar 2012
  12. Flisk

    Flisk Member

    Joined:
    4 Aug 2010
    Messages:
    147
    Likes Received:
    8
    Reputations:
    -2
    Разбираю сейчас 1 цмс, помогите понять, что делает этот скрипт, зачем вообще он? Яваскрипт не знаю, но знаю хтмл/пхп.

    Code:
      function checkthisusers(obj)
      {
       var check = document.getElementsByName("thisis[]");
       for (var i=0; i<check.length; i++) 
          {
          check[i].checked = obj.checked;
          }
       }
    В хтмл коде страницы есть список юзеров, слева от списка идут чекбоксы с именем thisis[]. Можно редактировать и удалять юзеров. Все ясно, неясно только что делает этот яваскрипт. Меняет статус чекбокса на чекед? А почему нельзя это сделать без яваскрипта, простым хтмл?
     
  13. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8

    Меняет статус списка чекбоксов в зависимости от параметра obj, который свою очередь тоже является чекбоксом. Он меняет статус не одного чекбокса, а целого списка, а это в HTML динамически не сделаешь.
     
  14. Flisk

    Flisk Member

    Joined:
    4 Aug 2010
    Messages:
    147
    Likes Received:
    8
    Reputations:
    -2
    R0nin, это чекбокс для выделения всего списка, да? Т.е. выбрать всех юзеров, верно?
     
  15. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    Ну, если судить по названии функции то да, а так для любых чекбоксов подходит функция.
     
    1 person likes this.
  16. tester_new

    tester_new Elder - Старейшина

    Joined:
    12 Feb 2012
    Messages:
    300
    Likes Received:
    45
    Reputations:
    24
    Есть список юзеров, при наведении на одного из них его фон должен подсвечиваться а при отводе
    соответсвенно гаснуть (становиться опять белым) исключение составляют пользователи которые выделены щелчком мышки(mark_user()) они не должны подсвечиваться при наведении на них.

    содержимое <div id='users'> обновляеться посредством Ajax и подсвеченные(user_list()) и выделеные (mark_user()) пользователи
    должны сохранять свое выделение.


    Пока это все работает крайне криво... в Chrome сразу подсвечиваеться 0 элемент списка (в других браузерах более более менее нормально)
    вообщем если кто понял как это работает) подправьте код плиз!!

    Интересует именно реализовать это на js!

    вот список функций:

    <div id="users">
    <div id="0" onclick="mark_user(0);" onmouseover="user_list(0)" onmouseout="user_list(0)">user1</div>
    <div id="1" onclick="mark_user(1);" onmouseover="user_list(1)" onmouseout="user_list(1)">user2</div>
    <div id="2" onclick="mark_user(2);" onmouseover="user_list(2)" onmouseout="user_list(2)">user3</div>
    <div id="3" onclick="mark_user(3);" onmouseover="user_list(3)" onmouseout="user_list(3)">user4</div>
    </div>

    var ubc, prev, id_user_color, user_hover=0;


    function UpdateDataUsers() {
    if(xmlHttp2.readyState == 4){
    if(xmlHttp2.status == 200){

    document.getElementById('users').innerHTML=xmlHttp2.responseText;

    if(document.getElementById(ubc) != undefined)
    document.getElementById(ubc).style.backgroundColor='#f4c430';

    if(document.getElementById(id_user_color) != undefined)
    document.getElementById(id_user_color).style.backgroundColor='#ccffff';

    return;

    }
    }
    }



    function mark_user(id) {

    if(document.getElementById(id).style.backgroundColor == '#ccffff' || document.getElementById(id).style.backgroundColor == 'rgb(204, 255, 255)') {
    document.getElementById(id).style.backgroundColor='#f4c430';

    if(navigator.appName == "Microsoft Internet Explorer")
    document.chat.private.value=document.getElementById(id).innerText;
    else
    document.chat.private.value=document.getElementById(id).textContent;

    if(ubc == id)
    return;
    }
    if(document.getElementById(ubc) != undefined) {
    if(ubc == id) {
    document.getElementById(id).style.backgroundColor='#ccffff';
    document.chat.private.value='';
    ubc='';
    }
    if(document.getElementById(ubc).style.backgroundColor == '#f4c430' || document.getElementById(ubc).style.backgroundColor == 'rgb(244, 196, 48)')
    document.getElementById(ubc).style.backgroundColor='#ffffff';
    }

    ubc=id;

    }



    function user_list(id) {

    if(document.getElementById(id).style.backgroundColor == '#ffffff' || document.getElementById(id).style.backgroundColor == 'rgb(255, 255, 255)' || !document.getElementById(id).style.backgroundColor) {
    document.getElementById(id).style.backgroundColor='#ccffff';


    if(document.getElementById(id_user_color).style.backgroundColor == '#ccffff' || document.getElementById(id_user_color).style.backgroundColor == 'rgb(204, 255, 255)')
    document.getElementById(id_user_color).style.backgroundColor='#ffffff';

    id_user_color=id;

    if(document.getElementById(user_hover).style.backgroundColor == '#ccffff' || document.getElementById(user_hover).style.backgroundColor == 'rgb(204, 255, 255)') {
    document.getElementById(user_hover).style.backgroundColor='#ffffff';
    id_user_color='';
    }

    user_hover=id;
    }



    if(document.getElementById(id).style.backgroundColor == '#ccffff' || document.getElementById(id).style.backgroundColor == 'rgb(204, 255, 255)' || !document.getElementById(id).style.backgroundColor) {
    document.getElementById(id).style.backgroundColor='#ffffff';


    if(document.getElementById(user_hover).style.backgroundColor == '#ffffff' || document.getElementById(user_hover).style.backgroundColor == 'rgb(255, 255, 255)')
    document.getElementById(user_hover).style.backgroundColor='#ccffff';

    user_hover='';
    }
    }
     
  17. Flisk

    Flisk Member

    Joined:
    4 Aug 2010
    Messages:
    147
    Likes Received:
    8
    Reputations:
    -2
    Подскажите, может есть готовая функция на яваскрипт или хотя бы в какую сторону копать?

    Есть таблица с разной инфой. Там функция, которая выделяет весь список. Мне надо, чтобы по нажатию кнопки яваскрипт создал таблицу и вывел на экране только данные из столбца PHONE. Реально ли такое сделать, если да - в какую сторону копать? Т.е. я выделаю записи, нажимаю кнопку - и на странице остаются только значения из столбца PHONE выделенных записей

    Код тут http://paste.org.ru/?5xr899
     
  18. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    http://stackoverflow.com/questions/455958/hide-show-column-in-an-html-table

    tester_new, http://jqueryui.com/demos/selectable/#default
     
    #3358 Chaak, 11 Mar 2012
    Last edited: 11 Mar 2012
    1 person likes this.
  19. tester_new

    tester_new Elder - Старейшина

    Joined:
    12 Feb 2012
    Messages:
    300
    Likes Received:
    45
    Reputations:
    24
    про jquery и метод hover знаю! интересует доделать именно этот вариант.
     
  20. WHBmen

    WHBmen New Member

    Joined:
    28 Dec 2010
    Messages:
    3
    Likes Received:
    1
    Reputations:
    0
    помогите со скриптом, нужно в хтмл страничку вставить ява скрипт или хтмл код, что бы фрэймились браузеры лиса , ишак, опера.
    заранее спасибо
     
Thread Status:
Not open for further replies.