webForumDet fria alternativet

ibland skickas onClick till adressraden

JavaScript

2 svar · 433 visningar · startad av orvar

Medlem sedan feb. 2001105 inlägg
Frågan#1

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

Medlem sedan aug. 20039 340 inlägg
#2
<?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>";
?>
Medlem sedan feb. 2001105 inlägg
#3

det fungerade, tack!

267 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)