[fixed] tab oplossing

Overzicht

Sponsored by: Vacatures door Monsterboard

Johan Dam

Johan Dam

08/07/2010 11:53:31
Anchor link
Graag zou ik zien dat tabs mogelijk worden bij reacties, ik heb het op mijn eigen website ook gezet en vergt minimale moeite,

Het is niet door mij gemaakt, ik heb gezocht waar ik hem wel vandaan heb maar kon het zo niet meer vinden.

Het werkt met een javascript dat in een textarea op de volgende manier word aangeroepen:
<textarea onkeydown="insertTab(this, event)></textarea>

De javascript is als volgt:
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
22
23
24
25
26
27
28
function insertTab(o, e)
{
    var kC = e.keyCode ? e.keyCode : e.charCode ? e.charCode : e.which;
    if (kC == 9 && !e.shiftKey && !e.ctrlKey && !e.altKey)
    {
        var oS = o.scrollTop;
        if (o.setSelectionRange)
        {
            var sS = o.selectionStart;
            var sE = o.selectionEnd;
            o.value = o.value.substring(0, sS) + "\t" + o.value.substr(sE);
            o.setSelectionRange(sS + 1, sS + 1);
            o.focus();
        }
        else if (o.createTextRange)
        {
            document.selection.createRange().text = "\t";
            e.returnValue = false;
        }
        o.scrollTop = oS;
        if (e.preventDefault)
        {
            e.preventDefault();
        }
        return false;
    }
    return true;
}
Gewijzigd op 15/08/2010 14:18:59 door B a s
 
PHP hulp

PHP hulp

21/11/2024 19:55:30
 
B a s
Beheerder

B a s

02/08/2010 17:48:09
Anchor link
Meer mensen hier behoefte aan?
 
- -

- -

02/08/2010 18:01:41
Anchor link
Ja, doen :-)
 
Erik Rijk

Erik Rijk

02/08/2010 20:35:27
Anchor link
Ik ben voorstander :)
 
Dalando De Zuil

Dalando De Zuil

04/08/2010 22:23:38
Anchor link
Goed idee!
Gewijzigd op 04/08/2010 22:24:03 door Dalando De Zuil
 
B a s
Beheerder

B a s

14/08/2010 14:00:29
Anchor link
Hoe bouw je hier een vinkje voor in JS dat als die aanstaat hij de tabs wel pakt, en anders niet? Ik denk dat sommige mensen dit liever ook niet hebben om door te skippen naar de submit knop.
 
Jelmer -

Jelmer -

14/08/2010 16:09:59
Anchor link
In het begin van de functie toevoegen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
var capture_tab_toggle = document.getElementById('capture_tab_toggle');
if(!capture_tab_toggle.checked)
    return true;

en ergens een checkbox met id="capture_tab_toggle" toevoegen. Maar misschien is het overzichtelijker om niet het reactieformulier hiermee ingewikkelder te maken, maar het gewoon bij voorkeuren te zetten? Dan kan je het onkeydown attribuut wel met PHP toevoegen.
 
B a s
Beheerder

B a s

14/08/2010 19:43:36
Anchor link
Precies. Bij de voorkeuren aan of uit kunnen zetten was het idee inderdaad. Dan kan ik gewoon doen, als hij geset is, zet dan de JS variabele capture_tab_toggle right?
 
Jelmer -

Jelmer -

14/08/2010 20:01:53
Anchor link
Het lijkt me handiger om een extern scriptje te maken, dat met jQuery.ready het onkeydown attribuut van deze textarea aanpast. Als mensen dan in hun voorkeuren hebben staan dat ze tabs willen, zet je <script src="extern_scriptje.js"> in de pagina, en anders niet.

Even denken, aangezien je prototype.js gebruikt, zou dat dan iets worden in de richting van...
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
22
23
24
25
26
27
28
29
30
$(window).observe('load', function() {
    var insertTab = function(e)
    {
        var o = Event.element(e);
        var kC = e.keyCode ? e.keyCode : e.charCode ? e.charCode : e.which;
        if (kC == 9 && !e.shiftKey && !e.ctrlKey && !e.altKey)
        {
            var oS = o.scrollTop;
            if (o.setSelectionRange)
            {
                var sS = o.selectionStart;
                var sE = o.selectionEnd;
                o.value = o.value.substring(0, sS) + "\t" + o.value.substr(sE);
                o.setSelectionRange(sS + 1, sS + 1);
                o.focus();
            }
            else if (o.createTextRange)
            {
                document.selection.createRange().text = "\t";
                e.returnValue = false;
            }
            o.scrollTop = oS;
            Event.stop(e);
        }
    }

    $$('textarea').each(function(textarea) {
        textarea.observe('keydown', insertTab);
    });
});
 
B a s
Beheerder

B a s

14/08/2010 20:32:39
Anchor link
Hij zegt '$(window).observe is not a function'? Ik ben helemaal niet zo'n ster in JS :)
 
Jelmer -

Jelmer -

14/08/2010 20:36:08
Anchor link
Ghehe, en ik niet zo'n ster met Prototype. Ik zat nog teveel met jQuery in m'n hoofd. Het had moeten zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
Event.observe(window, 'load', function() {
   // code
});
Gewijzigd op 14/08/2010 20:36:30 door Jelmer -
 
B a s
Beheerder

B a s

14/08/2010 20:37:11
Anchor link
Works like a mf..

Toevoeging op 14/08/2010 20:46:10:

Staat nu bij voorkeuren en is in te stellen, thanks Jelmer.

PS: Nu ging ik alweer gelijk de fout in om op tab te drukken om te submitten ;)
 
 

Dit topic is gesloten.



Overzicht

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.