Webアプリケーション内で、フォームフィールドにカスタム検証を使用しています。同じフォーム内に2つのボタンがあります。1つは実際にフォームを送信するためのもので、もう1つはフォームをキャンセル/リセットするためのものです。
ほとんどの場合、デフォルトのブラウザとしてSafariを使用しています。Safari 5がリリースされ、突然キャンセル/リセットボタンが機能しなくなりました。リセットボタンを押すたびに、フォームの最初のフィールドにフォーカスが移りました。ただし、これは私のカスタムフォーム検証と同じ動作です。別のブラウザで試してみると、すべてうまくいきました。私はSafari5の問題でなければなりませんでした。
Javascriptコードを少し変更したところ、次の行が問題の原因であることがわかりました。
document.getElementById("somefield").required = true;
それが本当に問題になることを確認するために、私はテストシナリオを作成しました。
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<form id="someform">
<label>Name:</label> <input type="text" id="name" required="true" /><br/>
<label>Car:</label> <input type="text" id="car" required="true" /><br/>
<br/>
<input type="submit" id="btnsubmit" value="Submit!" />
</form>
</body>
</html>
私が期待したことが起こった。最初のフィールド「名前」は自動的にフォーカスを取得しました。
他の誰かがこれに遭遇しましたか?