prototype.jsのリセットボタンに注意

1日ハマったのでメモ。

以下のようなソースがあったとしよう。

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta name="author" content="FC2,inc" />
<meta name="copyright" content="FC2,inc" />
<title>Prototype.js フォームリセットテスト</title>
<script type="text/javascript" src="prototype-1.6.1.js"></script>
<script type="text/javascript"><!--
 function resetButtonClick(f) {
  Form.reset(f);
  alert('reset!');
 }
//--></script>
</head>
<body>
<form name="testForm" action="">
<input type="text" name="text" value="" />
<input type="submit" name="submit_text" value="Submit" />
<input type="button" name="reset" value="Reset" onClick="resetButtonClick(document.testForm);" />
</form>
</body>
</html>

prototype.jsのForm.reset()を使う時、

<input type="button" name="reset" value="Reset" onClick="resetButtonClick(document.testForm);" />

のように、name値に「reset」を指定すると、動かない(リセットされない)。

FireFoxのエラーコンソールには、

form.reset is not a function.

と表示される。

動くようにするには、

<input type="button" name="reset_button" value="Reset" onClick="resetButtonClick(document.testForm);" />

のように書き換えれば良い。