如何将事件对象传递给Javascript中的函数?
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(),但我不知道如何使用这种方法做到这一点。 我尝试通过检查(事件)..但它没有工作。 我正在使用Prototype js。
(我知道如何传递一个事件,当我绑定JavaScript中的.click函数..而不是调用HTML内的..使用Jquery,但我必须debugging这段代码)
尝试使onclick js使用“返回”,以确保所需的返回值被使用…
<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>
我会改变你的绑定是:
<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; } }