Toon posts:

[JS] onsubmit wordt niet uitgevoerd

Pagina: 1
Acties:

Verwijderd

Topicstarter
Aan het onsubmit event van mijn form heb ik een Javascript functie gehangen, maar deze wordt nooit uitgevoerd. Ik heb geprobeerd om met alert-jes de code te debuggen, maar volgens mij wordt de functie uberhaupt niet uitgevoerd.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<html>
<head>
<script type="text/javascript" src="sha1.js"></script>
<script type="text/javascript">
<!--
function hash() {
  document.getElementById('hash').value = hex_sha1(document.getElementById('password').value);
  document.getElementById('password').value = '';
  return true;
}
//-->
</script>
</head>
<body>
  <form name="login" action="login.php" method="get" onsubmit="return hash();">
    <br><br><br><br><br><br>
    <table align="center">
      <tr>
        <td><b>username</b></td>
        <td><b>password</b></td>
      </tr>
      <tr>
        <td><input type="text" name="username"></td>
        <td>
          <input type="password" id="password">
          <input type="hidden" name="hash" id="hash">
        </td>
      </tr>
      <tr>
        <td><input type="submit" value="login"></td>
      </tr>
    </table>
  </form>
</body>
</html>

Verwijderd

nevermind

[ Voor 92% gewijzigd door Verwijderd op 23-02-2007 21:27 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:09

crisp

Devver

Pixelated

scope issue; je form heeft een property met de naam 'hash' maar je functie heet ook zo. De onsubmithandler wordt echter uitgevoerd in de scope van je formulier, dus je input-element met die naam zal als eerste gevonden worden.
2 mogelijke oplossing: of je functie renamen of dit doen:
HTML:
1
<form onsubmit="return window.hash()">

Overigens zou ik de referentie naar je formulier als argument meegeven middels het 'this' keyword, dat scheelt weer ID-lookups

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op vrijdag 23 februari 2007 @ 23:19:
scope issue; je form heeft een property met de naam 'hash' maar je functie heet ook zo. De onsubmithandler wordt echter uitgevoerd in de scope van je formulier, dus je input-element met die naam zal als eerste gevonden worden.
2 mogelijke oplossing: of je functie renamen of dit doen:
HTML:
1
<form onsubmit="return window.hash()">

Overigens zou ik de referentie naar je formulier als argument meegeven middels het 'this' keyword, dat scheelt weer ID-lookups
Geweldig, bedankt voor de oplossing en de tip.