Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    20

    Escludere un'area div da un evento onclick applicato al documento

    Ciao,
    è la mia prima richiesta di aiuto. Spero di riuscire a spiegare bene il mio problema.

    Sto creando un WYSIWYG editor (senza utilizzare un editor già in giro tipo TinyMce,FCKEditor, ecc.) per la personalizzazione di biglietti da visita, magliette, ecc., sulla specie di VistaPrint.
    Ho una classica barra dell'editor in alto all'interno di un div, e sotto un altro div contenente una o più caselle di testo e/o immagini che possono essere spostate o ridimensionate dall'utente.

    Ho una cosa del genere (sintetizzata):

    <div id="barraeditor" >
    [img]img/text_bold.png[/img]
    [img]img/text_italic.png[/img]
    [img]img/text_underline.png[/img]
    </div>


    <div id="drag_cont"> DIV contenitore dell'area editabile

    <div id="text1">
    Inserisci testo...</div>
    </div>


    Ora, ho un problema su cui mi sono bloccato. Ho la necessità di ignorare la perdita del focus delle varie caselle di testo editabili solo se il mouse clicca sulla barra dell'editor. In caso contrario (con il click su tutte le altre parti della pagine) è giusto che la casella di testo perda il focus.
    Ho pensato di creare un evento onclick, che va a togliere il focus alla casella di testo, applicato all'intero documento ma escludendo il div contenente la barra dell'editor, utilizzando il target. Il codice è simile a questo:

    dsAddEvent(node, 'mousedown', function(e) {
    // Escludo l'evento mousedown se il focus è sul div della barra dell'editor.
    if(!e) e = window.event;
    var div=document.getElementById('barraeditor');
    var srg=(e.target)?e.target:e.srcElement;
    srg!=div?obj.mouseDown(e):null;

    Credevo così di risolvere. Però il problema sta nel fatto che all'interno del div "barraeditor" ci sono anche i tag <a> e <img>, con altri ID. Quindi succede che l'evento onclick viene giustamente ignorato se si clicca sulla barra dell'editor, però solo se fuori delle singole icone del Bold, Italic, ecc. Io credevo che l'onclick venisse ignorato per tutto il contenuto del div "barraeditor".
    Quale è la sintassi per escludere tutti gli id che si trovano dentro questo div? E' possibile fare una cosa del genere?

    Help please

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    occorre risalire per parentNode finche' non viene trovato l' elemento in questione,
    oppure non viene trovato, determinando cosi' l' evento come sicuramente scaturito altrove
    qui si tratta (anche) questo
    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    20
    Grazie per l'aiuto. Adesso funziona.
    Una sola domanda, che differenza c'è se in srg assegno e.target o e.relatedTarget? Nel mio caso sembrano funzionare in entrambi i modi.

    var srg=(e.target)?e.target:e.srcElement;

    var srg=e.relatedTarget?e.relatedTarget:e.srcElement;

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.