Toon posts:

[js] Controle Textarea

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb de volgende functie in elkaar gezet:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function checkInput(which){
  for(var f=0;f<document.forms[which].length;f++){ 
    if((document.forms[which].elements[f].type=='textarea') 
        && (document.forms[which].elements[f].value=='')){
      var errMsg='';
      errMsg='U bent een benodigd invoerveld vergeten in te vullen'; 
      document.forms[which].elements[f].focus(); 
     }
  }
  if(errMsg!=''){ 
    alert(errMsg); 
    return false;
  }
  else
    return true; 
}


De bedoeling van deze functie is het controleren van een textarea op lege waarden. Dit doe ik ook met bijvoorbeeld text-boxes. Echter, bij een textarea (deze functie dus) werkt het simpelweg niet. Ik heb me er al een ongeluk op gestaard, maar ik kan de fout niet vinden. Wie ziet wat ik fout doe :?

Bovendien zou ik graag de functie willen uitbreiden; Indien er een leeg textarea gevonden wordt, moet er niet alleen een melding en een focus gegeven worden, maar moet ook het textarea een andere achtergrond kleur krijgen. Is dit mogelijk met Javascript of moet ik dan met een soort van stylesheet gaan werken :?

Mocht iemand denken: waarom heeft ie zo'n true/false constructie zoals ie hier staat: De functie is van origine iets uitgebreider. Dan zit er nl ook nog een controle in voor text velden en select velden. Ik weet alleen zeker dat het op bovenstaande code misgaat :(

[ Voor 18% gewijzigd door Verwijderd op 03-10-2003 09:38 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

TEXTAREA is geen type, maar een tagName ;)
en je kan eenvoudig via de style property de backgroundColor wijzigen ;)

Intentionally left blank


  • JSchut
  • Registratie: Februari 2002
  • Laatst online: 21-08 08:30

JSchut

.....

crisp schreef op 03 October 2003 @ 08:50:
TEXTAREA is geen type, maar een tagName ;)
Dit is niet waar.....
Dit kan je wel zo opvragen....
if((document.forms[which].elements[f].type=='textarea')
&& (document.forms[which].elements[f].value)=='')){
hier staat een haakje achter value wat er niet hoort
Bovendien zou ik graag de functie willen uitbreiden; Indien er een leeg textarea gevonden wordt, moet er niet alleen een melding en een focus gegeven worden, maar moet ook het textarea een andere achtergrond kleur krijgen. Is dit mogelijk met Javascript of moet ik dan met een soort van stylesheet gaan werken
dit kan je met javascript en classes(stylesheet) doen

[ Voor 18% gewijzigd door JSchut op 03-10-2003 08:51 ]

PSN jschut_82 | Xbox: JSchut82


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

JSchut schreef op 03 oktober 2003 @ 08:50:
[...]

Dit is niet waar.....
Dit kan je wel zo opvragen....
mmmz, je hebt gelijk kan idd wel
[...]


hier staat een haakje achter value wat er niet hoort
en dus had TS een vette JS error moeten krijgen, iets wat ik dan graag in de topicstart had gelezen.
[...]

dit kan je met javascript en classes(stylesheet) doen
Je hoeft dat niet met classes te doen, classes swappen is zelfs vrij traag. In dit geval zou ik er al snel voor kiezen gewoon direct style.backgroundColor te wijzigen.

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op 03 October 2003 @ 08:50:
TEXTAREA is geen type, maar een tagName ;)
en je kan eenvoudig via de style property de backgroundColor wijzigen ;)
OK, ik ben uit die backgroundColor; werkt prima zo.

Bij het testen kwam ik alleen op een heel vaag probleem. Als ik over het form geen enkele waarden geef aan text, select, textarea velden, dan loopt het script zichzelf dood.

Als ik dit probeer te debuggen dmv een alert na de for, dan krijg ik bij geen enkele invoer geen alert, maar krijgt wel het eerst text veld een andere kleur. Daarna werkt het script niet meer.

Voor de duidelijkheid: Ik heb die backgroundColor opdracht geplaatst boven de regel met:
JavaScript:
1
document.forms[which].elements[f].focus(); 
en dus had TS een vette JS error moeten krijgen, iets wat ik dan graag in de topicstart had gelezen.
Typfoutje bij het posten van mij. Ik krijg dus niet zo'n vette JS error :)

[ Voor 11% gewijzigd door Verwijderd op 03-10-2003 09:17 ]


  • JSchut
  • Registratie: Februari 2002
  • Laatst online: 21-08 08:30

JSchut

.....

Verwijderd schreef op 03 October 2003 @ 09:16:

Typfoutje bij het posten van mij. Ik krijg dus niet zo'n vette JS error :)
De code zoals die hierboven staat geeft dus WEL een vette JS error.

PSN jschut_82 | Xbox: JSchut82


Verwijderd

Topicstarter
JSchut schreef op 03 oktober 2003 @ 09:31:
[...]


De code zoals die hierboven staat geeft dus WEL een vette JS error.
Klopt door dat haakje wat verkeerde staat. Nogmaals: In de originele source zit deze fout niet. Ik zal het wel ff editen in de openingspost. :)

Verwijderd

Topicstarter
Ik heb de foutmelding bovenwater getoverd (enkele opties in IE) en het komt erop neer dat ie een object wil focussen die niet gefocust kan worden. Hiervoor moet ik dus een check verzinnen. Iemand tips voor een efficiente oplossing?

  • JSchut
  • Registratie: Februari 2002
  • Laatst online: 21-08 08:30

JSchut

.....

Verwijderd schreef op 03 October 2003 @ 09:36:
[...]

Klopt door dat haakje wat verkeerde staat. Nogmaals: In de originele source zit deze fout niet. Ik zal het wel ff editen in de openingspost. :)
ik heb de code net getest (met de fout eruit gehaalt) en dan werkt het hier gewoon......

PSN jschut_82 | Xbox: JSchut82


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

document.forms[which].length

moet je niet het aantal elementen weten?

document.forms[which].elements.length

(ik gok maar wat hier, zoals gezegd werkt de code zoals hij hier staat - anders hebben we toch een wat vollediger testcase nodig die wel fout gaat)

Intentionally left blank


Verwijderd

Topicstarter
Verwijderd schreef op 03 October 2003 @ 09:40:
Ik heb de foutmelding bovenwater getoverd (enkele opties in IE) en het komt erop neer dat ie een object wil focussen die niet gefocust kan worden. Hiervoor moet ik dus een check verzinnen. Iemand tips voor een efficiente oplossing?
Het gaat alleen fout bij een textarea waar htmlarea ( http://www.interactivetools.com/products/htmlarea/ )aan gekoppeld is. Heeft iemand ervaring met deze combinatie en/of weet iemand of dit een bug van htmlarea is of dat het op een andere manier op te lossen valt :?

  • JSchut
  • Registratie: Februari 2002
  • Laatst online: 21-08 08:30

JSchut

.....

als ik hier http://www.interactivetoo.../htmlarea/index.html#demo naar de source kijk dan zou dat niet uit moeten maken....

PSN jschut_82 | Xbox: JSchut82


Verwijderd

Topicstarter
Pcies, dat zou ik dus ook zeggen, maar blijkbaar wijst de praktijk iets anders uit. Htmlarea doet wat vreemds met dat textarea, maar ik kom er niet achter wat :(

  • JSchut
  • Registratie: Februari 2002
  • Laatst online: 21-08 08:30

JSchut

.....

mmmmmmm.....

je moet ff in de source (editor.js) zoeken naar de funtie editor_getHTML en dan ff kijken hoe die werkt.... daarmee kan je wel kijken wat de "value" is

[ Voor 8% gewijzigd door JSchut op 03-10-2003 10:06 ]

PSN jschut_82 | Xbox: JSchut82


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

Ik zou het prettig vinden als je dit soort details voortaan meteen vermeld, nu gaan we uit van een normale textarea en kunnen het probleem niet reproduceren.
En dat is trouwens iets wat je zelf zou moeten doen als je tegen onverklaarbare problemen oploopt: een simpele case maken en telkens verder uitbreiden tot je het probleem kan reproduceren.

Als het een probleem mbt htmlArea is zou ik je aanraden contact op te nemen met de maker daarvan :)

[ Voor 28% gewijzigd door crisp op 03-10-2003 10:12 ]

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op 03 October 2003 @ 10:08:
Ik zou het prettig vinden als je dit soort details voortaan meteen vermeld, nu gaan we uit van een normale textarea en kunnen het probleem niet reproduceren.
Als het een probleem mbt htmlArea is zou ik je aanraden contact op te nemen met de maker daarvan :)
Dat snap ik. Ik kom er echter zelf net achter en op de een of andere manier ging er daardoor ook iets mis met de normale textarea's :)
Pagina: 1