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中不会发生,因为它会引发错误并在单击“确定”后发布表单(返回true)。
我怎能避免这种情况?我正在考虑使用event.preventDefault()避免这种情况,但我不知道如何使用此方法执行此操作。我尝试通过checkme(事件)..但它没有工作。我正在使用Prototype js。
(我知道如何在javascript中绑定.click函数时传递一个事件..而不是在html中调用onclick ...使用Jquery,但我必须调试这段代码)
答案 0 :(得分:164)
将函数check_me的定义修改为::
function check_me(ev) {
现在,您可以访问事件的方法和参数:
ev.preventDefault();
然后,您必须在内联调用::
中的onclick上传递参数<button type="button" onclick="check_me(event);">Click Me!</button>
useful link了解这一点。
完整示例:
<!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>
答案 1 :(得分:19)
尝试使onclick js使用'return'以确保使用所需的返回值...
<button type="button" value="click me" onclick="return check_me();" />
答案 2 :(得分:-3)
我会将你的绑定改为:
<button type="button" value="click me" onclick="check_me" />
然后我会将您的check_me()
函数声明更改为:
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();
event.preventDefault();
} else {
return true; }
}