text veld direct controleren

Status
Niet open voor verdere reacties.

ecross

Gebruiker
Lid geworden
4 mrt 2009
Berichten
638
hallo,

ff uitleggen:
ik heb de vraag eerst gesteld bij php (dat gebruik ik)
daar heb ik het volgede script voor gekregen:
HTML:
<script type="text/javascript"> 
 
 
function validate(str) {
   document.getElementById('foo').innerHTML = 'controleer: ' + str;
 
   //hier de code van de validatie. Bijvoobeeld een if met een regexp oid.
 
}
</script> 
 
<h1>Please choose your username:</h1> 
 
<form> 
  <input type="text" onkeyup="validate(this.value)" /> 
  <div id="foo"></div> 
</form>
hierkun je het script werkend zien.
hier kun je de vraag bij php bekijken.

ik wil het getypde direct controleren op juistheid (terwijl nog aan het typen) daar had ik het volgende stuk php voor:
PHP:
if (!ereg("^.+@.+\\..+$", $_GET['email']))
{
echo "het email adress is juist";
}
else
{
echo "het email adress is onjuist";
}

het controleert of het email adress (verkregen via GET) het zelfde is als:
iets@iets.iets
namelijk door:
^ = begin van de regel
.+ = meer van een willekeurig teken
@ = een letterlijk @
.+ = meer van een wilekeurig teken
\\. = een leterlijke .
.+ = meer van een willekeurig teken
$ = einde van de regel

dan schrijft hij(echo) het email adress is juist
anders: het email adress is onjuist.

hoe kan ik dit met elkaar gebruiken, of kan ik het stukje php beter met javascript doen (hoe?).
en ook weet ik niet hoe het javascript werkt.

alvast bedankt
 
Laatst bewerkt:
Nou, je kan dit dus via php doen, als je ajax gebruikt. Zoiets.

ajax.php
PHP:
<?php
if (!ereg("^.+@.+\\..+$", $_GET['email']))
{
echo "het email adress is juist";
}
else
{
echo "het email adress is onjuist";
}
?>
test.html
HTML:
<html>
<head>
</head>
<body>

<h1>Email test:</h1>
<form>
  <input type="text" onkeyup="validate(this.value)" />
  <div id="foo"></div>
</form>

<script type="text/javascript">
var http = false;

if(navigator.appName == "Microsoft Internet Explorer") {
  http = new ActiveXObject("Microsoft.XMLHTTP");
} else {
  http = new XMLHttpRequest();
}

function validate(mail) {
  http.abort();
  http.open("GET", "ajax.php?email=" + mail, true);
  http.onreadystatechange=function() {
    if(http.readyState == 4) {
      document.getElementById('foo').innerHTML = http.responseText;
    }
  }
  http.send(null);
}
</script>

</body>
</html>


:thumb:
 
tanks

ik ga het even proberen
maar ik snap niets van de javascript
nouja :confused:
 
het werkte maar nu heb ik heb script veranderd om te gebruiken met een dropdownbox
(<select>) de scripts zijn geworden:

test.html:
HTML:
<html>
<head>
</head>
<body>
 
<h1>zoek:</h1>
<form>
  <select onclick="validate(this.value)" />
	<option selected>optie1</option>
	<option>optie2</option>
  </select>
  <div id="foo"></div>
</form>
 
<script type="text/javascript">
var http = false;
 
if(navigator.appName == "Microsoft Internet Explorer") {
  http = new ActiveXObject("Microsoft.XMLHTTP");
} else {
  http = new XMLHttpRequest();
}
 
function validate(mail) {
  http.abort();
  http.open("GET", "ajax.php?email=" + mail, true);
  http.onreadystatechange=function() {
    if(http.readyState == 4) {
      document.getElementById('foo').innerHTML = http.responseText;
    }
  }
  http.send(null);
}
</script>
 
</body>
</html>
ajax.php
PHP:
<?php
if ($_GET['email'] == "optie2")
{echo "gekozen: optie2";}
else
{echo "gekozen: optie1";}
?>

het probleem is: als je een optie aangeklikt hebt moet je nog een keer klikken en dan doet ie het pas,
weet iemand waar dit aan licht??
 
Ik denk dat het is omdat je op de select een onclick hebt gezet. Als je een waarde kiest, wordt echter een onclick op de <option> getriggered.

Je kunt eens proberen om van de onclick -> onchange te maken.

Trouwens, het stukje PHP dat je nu op de server uitvoert kun je makkelijker (lees: efficienter) gewoon clientside uitvoeren.
 
Laatst bewerkt:
Ik ben bezig met deze code. Ik heb overigens meerdere tekst velden hoe moet k dit dan valideren?
 
bedoelje dat als bij een veld voor een naam een naamvalidatie wordt gedaan en bij een veld voor email een emailvalidatie wordt uitgevoerd.
Want dan stuur je in de functie een extra waarde mee. bv de naam van het unputfield.
onclick="validate(this.value,this.name)"

Bij de functie controleer je wat de naam is

function check(value,type) {

if(type == 'naam') {
check_name(value);
} elseif(type == 'email'){
......enz
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan