Vraag over invulveld

Status
Niet open voor verdere reacties.

Titto

Gebruiker
Lid geworden
30 aug 2011
Berichten
55
Hallo,

Ik heb op www.zee-online.be/dehaan een zoekformulier bovenaan rechts geplaatst.
In het zoekveldje heb ik met een value= het woord Zoeken... geplaatst.

Nu wil ik graag hebben dat als men op het zoekveldje klikt om te beginnen typen, dat het woord dan weg gaat en dat het formulier dus klaar is om het trefwoord in te geven.

Echter weet ik niet hoe het moet, kan iemand mij hulp bieden a.u.b?
 
Werkt nu toch eh??
Nee, nog net niet.
Je moet nog even id="q" toevoegen aan dit regeltje:
Code:
<input type="text" name="q" size="23" maxlength="255" value="Vul een trefwoord in" onclick="vensterLegen()" />
Dus:
Code:
<input type="text" id="q" name="q" size="23" maxlength="255" value="Vul een trefwoord in" onclick="vensterLegen()" />
Met deze id weet het javascript van welke <input> de waarde op "leeg" gezet moet worden.
 
Ziezo, ik heb het aangepast.
tot slot nog een vraagje; ik zou die bolletjes met zeeonline en internet willen wegnemen zodat ie er niet meer opstaan, maar als er een zoekwoord ingegeven wordt dat ie automatisch alleen gaat zoeken binnen Zee online.

Hoe doe ik dit?
 
Ok, dat is dat al.
Nu ga ik nog heel ff tot slot in detail vallen, maar dat niet zo mooi oogt.
Nu heb ik gezien dat het button een beetje naar onder is geschoven, dat zou mooi gelijk moeten staan met het invul veld.

www.zee-online.be/dehaan
 
Ja, en in andere browsers dan Internet Explorer past het knopje er niet naast, en gaat naar de volgende regel.
Wat heb je geprobeerd?
 
Ik heb nog niet geprobeerd.
Maar voor ik je script gebruikte stond het er mooi naast en nu is het een tikkeltje naar onder geschoven.

Ik gebruik IE 9.
 
Ja, en ik weet hoe het komt! :D
Als je naar de code kijkt, staat er:
HTML:
...
<input style="margin-bottom: 5px" id="q" type="text" name="q" size="23" 
   maxlength="255" value="Zoeken..." onclick="vensterLegen()" /> 
<input style="margin-top: 5px" type="submit" name="btnG" value="Go!" />
...
Ik had de knop 2 keer 5px lager gezet!
Waarom? Ik had even niet in de gaten dat deze button er in IE naast kwam te staan. Ik bekeek de pagina met Firefox, en daarin kwam de knop er onder, d.w.z. vlak tegen het randje van het invulvakje aan. Daarom deze 5px afstand erin gezet:

Was:
zoekvenstertje-2-FF-a.png
>> Werd:
zoekvenstertje-2-FF-b.png

Als je de 5px'en er weer uit haalt, ben je van het probleem met IE af.
Maar dan gaat het weer fout in alle andere browsers (Firefox, Chrome, Opera, Safari).

Hoe kan dat zo? Het opmaken van <form>'s hoort tot de lastigste dingen in css-land, omdat er geen hele strakke standaarden/voorschriften voor zijn, en de browsers het nogal verschillend doen.

Ik heb nog niet geprobeerd.
Je boft, ik wel.
Om er uit te komen, heb kan je je toevlucht nemen tot een <table> en die nog redelijk heavy stylen met css. *)
Zoals:
HTML:
<form 
   method="get" action="http://www.google.com/search" target="_blank"
   style="width: 200px; margin: 0; padding: 0;"> 
   <table style="width: 100%; border-collapse: collapse; border: 0;">
      <tr style="width: 100%;">
         <td style="padding-right: 3px;">
            <input type="text" id="q" name="q" maxlength="255" 
               style="width: 140px; padding: 2px; border: 1px solid #6595C1; margin: 0; 
               -moz-border-radius: 5px; border-radius: 5px; vertical-align: middle; color: #808080;"
               value="Vul uw trefwoord in..." onclick="vensterLegen()" />
         </td> 
         <td style="width: 100%; text-align: right;">
            <button type="submit" name="btnG" 
               style="padding: 0; vertical-align: middle;"
               value="Zoek!">Zoek!</button>
            <input type="hidden" name="ie" value="UTF-8" />
            <input type="hidden" name="oe" value="UTF-8" />
            <input type="hidden" name="sitesearch" value="http://www.zee-online.be" />
            <input type="hidden" name="domains" value="http://www.zee-online.be" />

            <script type="text/javascript">
               var alIngevuld = "nee"; // bij pagina openen
               function vensterLegen(){
                  if (alIngevuld == "nee"){
                     var zoekvenster = document.getElementById('q');
                     zoekvenster.value = "";
                     zoekvenster.style.color = "black";
                     alIngevuld = "ja";
                  }
               }
            </script>
         </td>
      </tr>
   </table>
   <hr style="margin-top: 15px;" />
</form>
Hierin is de <input type="submit" ... enz. vervangen door een <button type="submit" ... enz., omdat een knop met <button> zich makkelijker laat stylen dat een knop met <input>.

Nog erbij gedaan: het regeltje "Vul uw trefwoord in..." heb ik in het grijs gezet > de tekst in het invulvakje wordt via het javascript vanzelf zwart als je iets gaat intikken.
En ook: ronde hoekjes voor het invulvakje (voor die browsers, die al de css3 hiervoor ondersteunen).
  • Test: zoekvenstertje-3.htm

  • Voor zover ik het kan bekijken, is dit bestand tegen de tegenstrijdigheden van alle browsers, ook als de bezoeker een andere lettergrootte heeft ingesteld dan standaard. :)
O ja, ik zou ofwel nemen als tekst "Vul uw trefwoord in..." en dan als zoekknop "Zoek", ofwel als tekst: "Vul uw zoekwoord in..." en als knop "Go!" - dan is voor iedereen duidelijk dat het daar om zoeken gaat.

Met vriendelijke groet,
CSShunter
____________
*) De site is toch al in table-opmaak i.p.v. met pure css, en een tafeltje meer of minder maakt dan ook niet uit. ;)
Het kan ook met css alleen zonder <table>, dan kan je het helemaal exact hetzelfde krijgen in alle browsers. Maar dan kom je er waarschijnlijk op uit dat je de button (en de hover-status van de button) moet namaken in een tekenprogramma.
 
Ziezo, ik heb het even bijgewerkt. ;)
In Firefox ziet het formulier er al netjes uit met afgeronde hoekjes, in IE9 nog niet.

Wat kan ik daar aan doen?
 
Wat kan ik daar aan doen?
Je codes saneren! :d
Zoals ik eerder al zei, het is een Groot Wonder dat deze pagina het doet met o.a. al z'n extra <html>'s, <head>'s en <body>'s.
Niet voor niets is het eerste van mijn handtekening hieronder:
"Als een webpagina plots niet doet wat je wilt, raadpleeg dan eerst de html-validator".​
En er wordt, behalve de php-includes die geen eigen <html><head><body> structuur mogen hebben *), méér gezondigd tegen de html die het volgens de standaard voor html-code (html-specificatie, zie handtekening) moet zijn...
Bijvoorbeeld:
  • elke html-pagina moet met een Doctype beginnen (zie ook handtekening hieronder),
  • er moet een <meta> element in staan met een opgegeven "charset".
  • de <style> moet in de <head> staan,
  • een aantal tags (zoals <center>) enz. zijn achterhaald en verboden geworden,
  • tags moeten op de goede manier worden afgesloten.
IE9 ondersteunt gewoon de css-3 eigenschap voor de border-radius, en volgens NetRenderer doet het invulvakje het ook prima als je daar mijn voorbeeld http://www.bliksekaters.nl/tests/zoekvenstertje-3.htm in het venstertje plakt en vraagt of IE9 gerenderd kan worden.
  • In jouw IE9 zou mijn voorbeeld het dan ook moeten doen met ronde hoekjes. Klopt dat? Ik gok op 99,9999%, wat wel naar 100% afgerond kan worden!
Het ligt dus aan fouten op je pagina dat het niet werkt, en niet aan IE9. :p
Voor de bewijsvoering heb ik even de meest ernstige fouten uit het html-resultaat van je php-gebaseerde pagina gehaald.
Met vriendelijke groet,
CSShunter
_____________
*) Jij zei toen:
Ziezo, dat lukt ook weer.
Die html, head en body tags staan er zo nog wel op, maar ze lijken toch te werken.
Mijn vraag hier is opgelost.
Dat leek inderdaad wel een beetje zo (alweer een Wonder). Maar nu blijkt dus dat op andere punten de pagina niet toch goed werkt door de overmatige <html>'s, <head>'s en <body>'s.
Schone html is de sleutel voor een schone pagina!
 
Laatst bewerkt:
Ok, ik kijk er zodadelijk naar en ga proberen om het op te lossen.
Maar probleem is dat in sommige menu's een deel in de head en een deel in de body moet staan, en dus heb ik die html en head tags bij in de include pagina gezet.
 
Hoi Titto,
Maar probleem is ...
Ik denk niet dat dat het probleem is. Ik denk eerder dat jij zo hard aan het hollen bent om er een mooie site van te maken, dat je jezelf geen tijd gunt om de theorie van het webbouwen onder de knie te krijgen: leren, lezen en experimenteren.
  • Experimenteren: niet meteen iets nieuws/anders op de al draaiende site gaan zetten, maar het eerst uitproberen op een simpele losse testpagina. Dan weet je wat je doet, en als het werkt kan je het overzetten naar de site.
  • Leren: bv. het leesvoer dat je hier op helpmij is aangeraden, en achtergrondkennis biedt voor precies jouw vragen. Heb je de mini-tutorial "Opzet van een php-site" en de "Cursus Html en Css" van web-garden.be al doorgenomen?
  • (goed) Lezen: bv. de eerdere tips hier op helpmij. :)
=====
probleem is dat in sommige menu's een deel in de head en een deel in de body moet staan, en dus heb ik die html en head tags bij in de include pagina gezet.
Die vraag had je al eerder gesteld:
Jaja, maar dan heeft het menu zelf toch ook geen mooi uitzicht toch? dan heeft ie toch maar gewone links met opsommingstekens?
Met als antwoord:
nee-nee-nee, gelukkig niet!
Een php-include zorgt ervoor dat wat in de include staat, ingevoegd wordt in de html die de bezoeker als pagina krijgt. Als in de pagina de css wordt gegeven / opgehaald voor het menu, krijgt het menu automatisch die opmaak. (enz.)

Maar vooruit, nog een keer in tekening gezet:

php-include-en-styles.png

Een php-include is alleen een uitgeknipt stukje html-code. De server plakt het er acuut weer in als de pagina wordt opgevraagd door een bezoeker.
Daarom staan óók de styles van het uitgeknipte stukje gewoon in het style-blok in de <head> van de pagina (of beter: in een apart stylesheet; zie webgarden-cursus).
Zou je het uitgeknipte stukje code los bekijken, ja, dan heeft het geen opmaak. Maar het uitgeknipte stukje komt niet los voor, het wordt meteen in de pagina geplakt, alsof het er altijd in heeft gezeten. *)

Conclusie
  • De styles van het menu moeten erbij gezet worden in de <style> in de <head>, of in het stylesheet dat in de <head> van elke pagina wordt opgeroepen.
  • De <html><head><body>'s van de php-inclucde kunnen er dan uit.
  • De pagina gaat goed draaien, en browsers kunnen niet meer struikelen en rare dingen gaan doen.
Met vriendelijke groet,
CSShunter
_____________
*) Een bezoeker die de broncode van de pagina bekijkt, kan ook niet zien waar de php-include er is ingeplakt. Die ziet alleen de code van de complete pagina.
 
Hazo, csshunter, ik dankje voor je hulp en denk hierbij dat mijn vraag opgelost is.
Mocht dit niet zo zijn, dan kom ik eens dag zeggen op het forum en nog een berichtje plaatsen.

Maar voorlopig kan hier een slotje op. ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan