Versio

[JS/mootools] onclick behalve input

Overzicht Reageren

Boris Mattijssen

Boris Mattijssen

05/07/2009 10:03:00
Quote Anchor link
Hallo allemaal,

Ik zit met een klein probleempje.
Ik heb de volgende code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
/* alleen ff voor de syntax highlight */

$$('.table tr td').each(function(el) {
        el.addEvent('click', function(e) {
            e.stop();
            
            var
nothidden = el.getElements('span.nothidden');
            var
hidden    = el.getElements('span.hidden');
            
            nothidden.removeClass('nothidden');
            nothidden.addClass('hidden');
            
            hidden.removeClass('hidden');
            hidden.addClass('nothidden');            
        });
    });

?>


Nu wordt dus als er op een td wordt geklikt, de span met class"nothidden" in die td "hidden" gemaakt. En de span met class"hidden" "nothidden" gemaakt.

Dit werkt allemaal goed.

Alleen heb ik in de span "hidden" een input staan.
Dus als ik op mijn input klik om deze inhoud te bewerken, wordt hidden weer nothidden en nothidden weer hidden. En is m'n input weer "weg".

Kan ik dit oplossen dmv css selectors? $$('.table tr td *!=input') o.i.d.?
Of heeft iemand een andere oplossing?

Ik hoor het graag!

Mvg,
Boris

PS: ik werk met mootools
Gewijzigd op 01/01/1970 01:00:00 door Boris Mattijssen
 
PHP hulp

PHP hulp

25/05/2012 02:01:49
Gesponsorde koppelingen:
 
Jelmer rrrr

Jelmer rrrr

05/07/2009 10:08:00
Quote Anchor link
Kan je niet een event-handler aan je input element hangen, die dan het event stopt zodat het niet verder propageert naar de tr en andere bovenliggende nodes?

Je kan ook in je event zien waarop geklikt is (e.target of e.srcElement volgens mij, zou best wel eens kunnen verschillen in IE/FF, maar mootools heeft daar vast wel een oplossing voor) en daarvan de tagName opvragen. Is die "INPUT", dan weet je dat je daarop gelikt hebt.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer rrrr
 
Boris Mattijssen

Boris Mattijssen

05/07/2009 10:11:00
Quote Anchor link
Hmm.. je bodoelt: onClick="return false;" op m'n input?
Werkt helaas niet..

Wel bedankt voor het meedenken!

Edit:
Ik heb nu dit toegevoegd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
el.getElement('span form input').addEvent('click', function(event) {
    event.stop();
    return false;
});


Waardoor het totaal er zo uitziet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
$$('.table tr td').each(function(el) {
        el.addEvent('click', function(e) {
            e.stop();
            
            el.getElement('span form input').addEvent('click', function(event) {
                event.stop();
                return false;
            });
            
            var
nothidden = el.getElements('span.nothidden');
            var
hidden    = el.getElements('span.hidden');
            
            nothidden.removeClass('nothidden');
            nothidden.addClass('hidden');
            
            hidden.removeClass('hidden');
            hidden.addClass('nothidden');            
        });
    });

?>


Nu kan ik iig in mijn input klikken.
Wanneer ik nu echter op enter druk om mijn formulier te submitten.

Lijkt het wel of die onclick weer "geactiveerd" wordt, en is mijn input weer "weg".

Iemand een idee hoe dit kan?

mvg,
Boris



EDIT2:
Dat laatste stukje code gewijzigd naar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?
el.getElement('span form').addEvent('click', function(event) {
    event.stop();
    return false;
});

?>


(dus in de getElement "input" weggehaald.)

Maar het vreemde is, dat als ik nu op enter druk, hij in IE wel submit maar in FF niet..
Iemand enig idee?

mvg
Gewijzigd op 01/01/1970 01:00:00 door Boris Mattijssen
 
Boris Mattijssen

Boris Mattijssen

05/07/2009 10:42:00
Quote Anchor link
Probleem opgelost.

Heb op de submit button een onClick geplaatst. (onclick="form.onsubmit()")
En nu werkt het.

mvg
boris
 



Overzicht Reageren