function check_me() {
//event.preventDefault();
var hello = document.myForm.username.value;
var err = '';
if(hello == '' || hello == null) {
err = 'User name required';
}
if(err != '') {
alert(err);
$('username').focus();
return false;
} else {
return true; }
}
Firefoxで空の値を送信しようとすると、エラーがスローされ、要素にフォーカスが戻ります。ただし、IEではエラーがスローされ、[OK]をクリックしてフォームをポストした(trueを返す)ため、同じことは起こりません。
どうすればこれを回避できますか? event.preventDefault()を使用してこれを回避することを考えていましたが、このメソッドを使用してこれを行う方法がわかりません。 checkme(event)..を渡そうとしましたが、うまくいきませんでした。 Prototype jsを使用しています。
(JQueryを使用してhtml ..内でonclickを呼び出す代わりに、javascriptの.click関数をバインドするときにイベントを渡す方法を知っていますが、このコードをデバッグする必要があります)
Onclick jsに 'return'を使用させて、目的の戻り値が使用されるようにしてください...
<button type="button" value="click me" onclick="return check_me();" />
関数check_meの定義を次のように変更します。
function check_me(ev) {
これで、イベントのメソッドとパラメーターにアクセスできます。
ev.preventDefault();
次に、インラインコールのonclickでパラメータを渡す必要があります。
<button type="button" onclick="check_me(event);">Click Me!</button>
有用なリンク これを理解するため。
完全な例:
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript">
function check_me(ev) {
ev.preventDefault();
alert("Hello World!")
}
</script>
</head>
<body>
<button type="button" onclick="check_me(event);">Click Me!</button>
</body>
</html>