Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    intercettare scrolling di select

    Esiste un evento che intercetta lo scolling delle select?

    Il problema che vorrei aggirare è quello che si verifica quando, senza aver tolto il focus da una select, l'utente cerca di scrollare la pagina con la rotella del mouse, questo come è noto, genera lo scorrimento della select quindi il cambiamento del valore che si era prescelto, col rischio di inviare involotariamente dati errati.

    Vorrei quindi avvisare l'utente di aver mosso la rotella stando su una select e quindi...bla bla.
    Per lo scrolling della pagina ho fatto questo:
    codice:
    <SCRIPT language="javascript">
    nota = document.getElementById('SCROLLALERT');
    function showNota(){
    nota.style.display='block';
    nota.style.left=document.body.scrollLeft+event.clientX+10;
    nota.style.top=document.body.scrollTop+event.clientY-70;
    if (nota.style.display=='block') { setTimeout("nota.style.display='none'", 10000) }
    }
    document.body.onscroll=showNota;
    </SCRIPT>
    Dove 'SCROLLALERT' è un livello con il messaggio di avviso.

    Naturalmente ho provato "onScroll" sulla select, ma non funziona.
    Luxx (°)
    Chi sa dica, chi non sa chieda.

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Credo che dare il focus al body basti.

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title>Untitled</title>
    </head>
    <body id="myBody">
    <select id="sel" onchange="document.getElementById('myBody').focus()">
     <option value="1">1</option>
     <option value="2">2</option>
     <option value="3">3</option>
     <option value="4">4</option>
     <option value="5">5</option>
     <option value="6">6</option>
     <option value="7">7</option>
    </select>      
    </body>
    </html>

  3. #3
    Ottimo sistema, grazie.
    Posso approffitare?
    Come faccio ad assegnare il comando a tutte le SELECT senza doverlo assegnare una per una?

    Sto provando con document.getElementsByTagName('SELECT')...
    ma mi sono impicciato, una dritta?
    Grazie.
    Luxx (°)
    Chi sa dica, chi non sa chieda.

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Puoi ridefinire l'evento onchange per i select.... Avrei un esempio su un altro computer.... ma lo schermo non funge più !!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    codice:
    function setNoScroll {
      var sel = document.getElementsByTagName('select');
      for (s in sel) {
        s.onchange = selblur;
      }
    }
    
    function selblur() {
      document.getElementById('myBody').focus();
    }
    Da chiamare (ad esempio) con l'onload della pagina
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    Sarebbe un'ottima soluzione, grazie Mich, ma purtroppo
    getElementsByTagName
    non ne vuole sapere di funzionare, sembra ignorare del tutto la collection,
    il guaio è che non funziona neanche
    document.body.all.tags('select')
    oppure
    document.body.all.tags("select")

    illustrati in MSDN al seguente URL:

    http://msdn.microsoft.com/workshop/a...sbytagname.asp

    mi viene il dubbio che sia colpa del browser, perchè l'esempio illustrato nella pagina in MSDN (show exsample > Show me) non funziona, nel senso che, se ho capito quel che dice, cliccando sui pulsanti/link neri dovrebbe comparire qualcosa nella tabella e invece niente.
    Luxx (°)
    Chi sa dica, chi non sa chieda.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.