Versio

[JS] input size

Overzicht Reageren

Mark L

Mark L

05/09/2009 16:53:00
Quote Anchor link
Ik wil dat mijn input-box even groot is als de text die erin staat. Dit doe ik d.m.v. een javascriptje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
function SizeInput (obj) {
    obj.size = obj.value.length+1;
}


Deze roep ik zo aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="text" onKeyPress="SizeInput(this);" />


Het werkt goed, want ik gebruik de mono-font, die even groot is als 1 stap in het size-attribuut. Nu heb ik echter één probleem. Als ik iets in de input plak, dan reageert hij hier niet goed op. Nu heb ik al geprobeerd om een OnKeyUp te gebruiken voor de Ctrl+V-actie, maar dan maakt hij hem groter, maar de text zit links van de input.
Dit bedoel ik zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
[] <- Dit is het inputboxje.

[hallo]          size: 5
  >> Nu plak ik de string 'Plakken';
[akken       ]   size: 12


Weet iemand een oplossing om dit te verhelpen? Dat hij wel goed reageert op geplakte text.
Alvast bedankt,
Miloan
Gewijzigd op 01/01/1970 01:00:00 door Mark L
 
PHP hulp

PHP hulp

25/05/2012 01:41:13
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Jesper Diovo

Jesper Diovo

05/09/2009 17:01:00
Quote Anchor link
Controleren of er een muisklik is, of een ctrl-druk?
 
Mark L

Mark L

05/09/2009 17:07:00
Quote Anchor link
Ja, dat had ik al geprobeerd met de CTRL-knop, maar dan krijg ik bovenstaand probleem, omdat ik te vroeg (of juist te laat ben). Met OnKeyDown en OnKeyPress ben ik te vroeg, dan is er nog niets geplakt. Met OnKeyUp ben ik te laat. De actie gebeurt dus pas na OnKeyDown en OnKeyPress en voor OnKeyUp.
Maar ik begrijp niet waarom hij bij OnKeyUp hij links van het scherm verschijnt.
 
Jesper Diovo

Jesper Diovo

05/09/2009 17:10:00
Quote Anchor link
Ik zou sowieso onKeyUp hanteren. Beter laat dan nooit : ). Ga nu eens een beetje debuggen middels alert(), en kijk wat obj.size, obj.value.length e.d. bevatten op het moment dat jij ze gebruikt.
 
Mark L

Mark L

05/09/2009 17:38:00
Quote Anchor link
De Ctrl+V heb ik nu:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
function SizeInput (obj) {
    obj.size = obj.value.length+1;
}
function CtrlV (obj, evt) {
    var code = (evt.keyCode) ? evt.keyCode : evt.which;
    if (code === 86 && evt.ctrlKey === true) { // is er Ctrl+V gedrukt?
        SizeInput(obj);
        obj.value += ''; // Om de string aan het begin van de input te tonen
    }
}

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="text" onkeydown="SizeInput(this);" onKeyUp="CtrlV(this, event);" />


Echter heb ik nu een probleem met de muis. Want JS stuurt de informatie als je klikt. Echter als je rechtermuis drukt, dan triggert hij de event, maar de gebruiker zou dan nog op plakken in het rechtermuis-menu moeten kiezen. Dus de functie is met OnClick, OnMouseDown, OnMouseUp niet te doen. Ook kan OnMouseMove niet, want als je op plakken hebt geklikt, dan zit je muis WAARSCHIJNLIJK niet meer op de input-element.

Heeft iemand nog een idee?
 
Jan Koehoorn

Jan Koehoorn

05/09/2009 18:48:00
Quote Anchor link
Ik dacht even aan het 'onchange' event, maar die wordt pas getriggerd na het 'onblur' event, lijkt het.
 



Overzicht Reageren

Get Adobe Flash player