webForumDet fria alternativet

skicka formulär med submitknapp OCH enter

12 svar · 449 visningar · startad av ptr_lks

ptr_lksMedlem sedan juni 2005584 inlägg
#1

Hej,
vet itne om jag börjar bli blind, men hittar inte svaret...
Jag undrar ifall det går att göra så att formulär postas även då enter/retur klickas och inte bara med knappen

<table border="0" width="100%">
  <tr>
    <td width="50%">
      <form method="POST" action="skriv_mess.asp">
        <table border="0" width="100%" cellspacing="0" cellpadding="0">
          <tr>
            <td width="5%"><font face="Arial" size="2">Chatt:&nbsp;</font></td>
            <td width="15%"><textarea name="chattText" cols="60" rows="5"></textarea>
</td>
            <td width="80%"><input type="submit" value="Chatta" name="btnSend"></td>
          </tr>
        </table>
      </form></td>
    <td width="50%" align="right">
      <form method="POST" action="loggut.asp" target="_top">
        <div align="center">
          <input type="submit" value="Lämna" name="btnLogout">
        </div>
      </form>    </td>
  </tr>
</table>
Peter SMedlem sedan dec. 20025 483 inlägg
#2

Frågan är vilket formulär som skall skickas vid entertryckning; du har ju två. Om markören befinner sig i <textarea>n skall inte formuläret postas vid entertryck. Är någon av knapparna i fokus, skickas den knappens formulär.

ptr_lksMedlem sedan juni 2005584 inlägg
#3

Peter S skrev:

Frågan är vilket formulär som skall skickas vid entertryckning; du har ju två. Om markören befinner sig i <textarea>n skall inte formuläret postas vid entertryck. Är någon av knapparna i fokus, skickas den knappens formulär.

men jag vill skicka - går inte detta att göra??

Peter SMedlem sedan dec. 20025 483 inlägg
#4

Vilket av formulären?

Peter SMedlem sedan dec. 20025 483 inlägg
#5

Vilket som kan du använda koden nedan.

document.onkeypress = function(e){
  var node = null;

  if (window.event){
    node = window.event.srcElement;
  } else if (e){
    node = e.target;
  }

  if (node && node != document.forms[1].elements[0]){
    document.forms[0].submit();
  }
}

Ovan har jag antagit det första formuläret. Skulle det vara tvärtom får du hojta till. :)

ptr_lksMedlem sedan juni 2005584 inlägg
#6

jag menade där

<textarea name="chattText" cols="60" rows="5"></textarea>

Funkar inte, dvs går inte att skriva ngt i textrutan :(
Bifogar hela koden...

Peter SMedlem sedan dec. 20025 483 inlägg
#7

Jag glömde uppenbarligen halva koden...

document.onkeypress = function(e){
  var node = null;

  if (e = window.event){
    node = e.srcElement;
  } else if (e){
    node = e.target;
  }

  if (e.keyCode == 13 && node && node != document.forms[0].elements[0] && node != document.forms[1].elements[0]){
    document.forms[0].submit();
  }
}
ptr_lksMedlem sedan juni 2005584 inlägg
#8

Tack Peter :birp
Orkar du förklara hur du tänkte? Så jag lär mig också? Eller var jag kan hitta en bra "tutte"?

Peter SMedlem sedan dec. 20025 483 inlägg
#9

Jag tänkte som så att:

  1. Fånga upp alla tangenttryckningar
  2. Om tangenten som trycktes ned var <enter> (keyCode = 13) och
  3. <textarea>n inte är i fokus
  4. Knappen i det andra formuläret inte är i fokus

Skicka iväg det första formuläret
När det gäller material, har mozilla.org en hel del. :)

ptr_lksMedlem sedan juni 2005584 inlägg
#10

men kan du ytterligare förklara dessa rader

1:document.onkeypress = function(e){
2: e = e || window.event;
3: var node = null;
4: if (window.event){
5: node = e.srcElement;
  } 
7: else if (e){
 8:   node = e.target;
  }

tack för ordet
/ptr

Peter SMedlem sedan dec. 20025 483 inlägg
#11

Jag glömde uppenbarligen ytterligare en sak, så ovanstående inlägg är uppdaterat. Dessutom förenklade jag saker och ting en smula. Här är förklaringen:

document.onkeypress = function(e){
  // variabel som skall hålla en referens till det objekt som är i fokus vid entertryckning
  var node = null;

  if (e = window.event){ // om window.event stödjs av webbläsaren tilldelas [i]e[/i] en referens till det objektet (för IE och Opera t.ex)
    node = e.srcElement; // det element som är i fokus då entertryckningen skedde
  } else if (e){ // annars använd det medskickade argumentet (för ff t.ex)
    node = e.target; // samma som ovan
  }

  if (e.keyCode == 13 && node && node != document.forms[0].elements[0] && node != document.forms[1].elements[0]){
    document.forms[0].submit();
  }
}
ptr_lksMedlem sedan juni 2005584 inlägg
#12

function(e)

står för enter-tryckning?
men variabeln node då?

Peter SMedlem sedan dec. 20025 483 inlägg
#13

Nej, på den första raden registrerar vi onkeypress-händelsen för dokumentet. Den tillåter oss att fånga upp entertryckningar.

Som jag skrev ovan sparas i node en referens till det element som är i fokus vid knapptryckningen.

:)

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)