<?php
echo "
<FORM NAME=\"answerForm\" ACTION=\"\" METHOD=\"GET\" [b]onsubmit=\"submitAnswer(this); return false;\" [/b]>
<INPUT TYPE=\"text\" NAME=\"userAnswer\" SIZE=37>
<INPUT TYPE=\"hidden\" NAME=\"questionNbr\" VALUE=\"1\">
<INPUT TYPE=\"hidden\" NAME=\"status\" VALUE=\"0\">
<INPUT TYPE=\"[b]submit[/b]\" NAME=\"button\" VALUE=\"OK!\" >
</FORM>";
?>
Hej,
jag har ett litet formulär vars indata jag skickar till en javascript-funktion som sedan behandlar den. Det funkar perfekt när användaren skriver i textfältet och sedan aktivt trycker på OK-knappen (antingen med musen, eller tabbar dit fokus och trycker enter).
Dock fungerar det inte när användaren fortfarande har kvar fokus i textfältet och direkt trycker enter, då "skickas" formulärdatat till adressfältet och inget utförs.
Lite kod:
Formuläret vari användaren skriver sin data.
<?php
echo "
<FORM NAME=\"answerForm\" ACTION=\"\" METHOD=\"GET\">
<INPUT TYPE=\"text\" NAME=\"userAnswer\" SIZE=37>
<INPUT TYPE=\"hidden\" NAME=\"questionNbr\" VALUE=\"1\">
<INPUT TYPE=\"hidden\" NAME=\"status\" VALUE=\"0\">
<INPUT TYPE=\"button\" NAME=\"button\" VALUE=\"OK!\" onClick=\"submitAnswer(this.form)\">
</FORM>";
?>
Javascript-funktionen sumbitAnser() som tar emot datan:
function submitAnswer(form) {
uAnswer = form.userAnswer.value;
uQuestion = form.questionNbr.value;
uStatus = form.status.value;
var url = 'http://www.hemsida.se/displaycontent.php?q=' + uQuestion + '&a=' + uAnswer + '&s=' + uStatus;
displayContent('quiz',url);
}
Javascript-funktionen displayContent():
function displayContent(box,url) {
var httpRequest;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
httpRequest = new XMLHttpRequest();
if (httpRequest.overrideMimeType) {
httpRequest.overrideMimeType('text/xml');
// See note below about this line
}
} else if (window.ActiveXObject) { // IE
try {
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!httpRequest) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
httpRequest.onreadystatechange = function() { listContents(box,httpRequest); };
httpRequest.open('GET', url, true);
httpRequest.send('');
}
function listContents(box,httpRequest) {
try {
if (httpRequest.readyState == 4) {
if (httpRequest.status == 200) {
document.getElementById(box).innerHTML = httpRequest.responseText;
} else {
alert('There was a problem with the request.');
}
}
} catch( e ) {
alert('Caught Exception: ' + e.description);
}
}
När användaren trycker enter och textfältet är markerat blir man alltså ex. dirigerad till adressen: http://www.hemsida.se/displaycontent.php?q=1&a=Mitt Svar&s=2
och ingenting händer istället för att scriptet körs igång.
Kan tänka mig att det finns någon enkelt ren HTML-lösning på detta, men tänkte det är lika bra att posta det i javascript forumet då det ändå är lite sån kod inblandad.
Tacksam för hjälp!
/orvar
