Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Posizione Mouse

  1. #1

    Posizione Mouse

    Salve a tutti.
    In JavaScript, oppure anche in php, esiste una funzione o qualcosa che mi possa dare la posizione del focus in una textarea? Ovvero il punto della textarea in cui compare il testo che viene digitato dalla tastiera.
    In altre parole, se ad esempio ho la frase "sono un nabo di php" e voglio aggiungere una "b" alla parola "nabbo", devo cliccare con il mouse dopo (o volendo anche prima) la lettera "b", ovvero nella posizione "11" (11 lettere da sinistra). Quando avrò cliccato lì, il prompt (o come si chiama) lampeggerà nella posizione 11.
    Esiste un modo per ricavare la sua posizione in qualunque punto della textarea?
    Grazie in anticipo

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ricavare la posizione del cursore (la | che lampeggia) in una textarea
    codice:
    <script>
    
    var isSelected = false;
    
    function markSelection ( txtObj ) {
        if ( txtObj.createTextRange ) {
            txtObj.caretPos = document.selection.createRange().duplicate();
            isSelected = true;
        }
    }
    
    function insertTag ( txtName, tag ) {
        if ( isSelected ) {
            var txtObj = eval ( "document.forms[0]." + txtName );
            if (txtObj.createTextRange && txtObj.caretPos) {
                var caretPos = txtObj.caretPos;
                caretPos.text = tag+caretPos.text;
                markSelection ( txtObj );
                if ( txtObj.caretPos.text=='' ) {
                    isSelected = false;
                    txtObj.focus();
                }
            }
        } else {
            // gestione perdita focus
        }
    }
    
    </script>
    
    <form>
    <textarea name="tsttxt"onselect="markSelection(this);" onclick="markSelection(this);" onkeyup="markSelection(this);"></textarea>
    </form>
    Il codice l'ho prelevato qui sul forum e non l'ho testato/provato
    Se invece vuoi recuperare la posizione del mouse nel documento
    codice:
    <script>function posizioneMouse(event,obj){
      var scrollTOP = (document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop;
      var scrollLEFT = (document.documentElement.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft;
      if(window.event){
       var allX = window.event.clientX+scrollLEFT;
       var allY = window.event.clientY+scrollTOP;
      } else {
       var allX = event.clientX+scrollLEFT;
       var allY = event.clientY+scrollTOP;
      }
      var elParent = obj;
      var objX = 0;
      var objY = 0;
      while (elParent){
       objX += elParent.offsetLeft;
       objY += elParent.offsetTop;
       elParent = elParent.offsetParent;
      }
      var x = allX-objX;
      var y = allY-objY;
      alert("Coordinata x:"+x+"px, coordinata y:"+y+"px");
    }
    </script>
    <div style="width:200px; height:200px; background-color:#0FF;" onclick="posizioneMouse(event,document.getElementById('test'));"></div>
    Anche questo non l'ho testato non mi sembra ci sia altro
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Wow. Okay, per le mie scarse capacità di javascript potrebbe essere un problema quindi devo chiederti un ulteriore aiuto. Innanzitutto ti ringrazio molto.
    Io ho una query che preleva dal database mysql una serie di articoli e mette il testo di ogni articolo in un <textarea> tramite un ciclo while. Quindi ho bisogno, per ognuna di queste textarea, di inserire un certo testo nel punto in cui si trova il cursore (|) all'interno della textarea. Ho già il codice che lo fa, ma aggiunge il testo alla fine della textarea, come tra poco vedrai. Suppongo di aver bisogno di mettere il valore della posizione dentro una variabile e che questa variabile cambi da sola nel momento in cui ovviamente sposto il mouse.

    codice:
    function bold(id){
    var piece = prompt('Inserisci il testo che desideri in grassetto:', '');
    var area = document.getElementById(id);
    area.value = area.value +'<b>'+piece+'</b>';
    area.focus();
    }
    Ovviamente la variabile id è l'id di ogni textarea.

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    area.value += '<b>'+piece+'</b>';
    Chiaramente il grassetto non verrà interpretato nella textarea
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Quello è come è già il codice. Ma quello compare alla fine della textarea, non nel punto del cursore. Volevo combinare le due cose. Credi sia possibile? :3

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Prova ad integrare le funzioni/codici insertTag/markSelection nel tuo script
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.