如何在Javascript中将事件对象传递给函数? 函数检查{ //event.preventDefault(); var hello=document.myForm.username.value; var err=''; 如果(hello=''| | hello==null){ err='需要用户名'; } 如果(错误!=''){ 警惕(err); $('username').focus(); 返回false; }否则{ 返回true;} }
在Firefox中,当我尝试提交一个空值时,它抛出错误并将焦点设置回元素。但在IE中不会发生同样的事情,因为它抛出错误,然后单击OK并发布表单(返回true) 我怎样才能避免这种情况?我想使用如何在Javascript中将事件对象传递给函数? 函数检查{ //event.preventDefault(); var hello=document.myForm.username.value; var err=''; 如果(hello=''| | hello==null){ err='需要用户名'; } 如果(错误!=''){ 警惕(err); $('username').focus(); 返回false; }否则{ 返回true;} },javascript,dom-events,Javascript,Dom Events,在Firefox中,当我尝试提交一个空值时,它抛出错误并将焦点设置回元素。但在IE中不会发生同样的事情,因为它抛出错误,然后单击OK并发布表单(返回true) 我怎样才能避免这种情况?我想使用event.preventDefault()来避免这种情况,但我不确定如何使用这种方法。我尝试传递检查我(事件)。。但它不起作用。我正在使用Prototype js (我知道如何在绑定Javascript中的.click函数时传递事件..而不是在html中调用onclick。.使用Jquery,但我必须调试
event.preventDefault()
来避免这种情况,但我不确定如何使用这种方法。我尝试传递检查我(事件)
。。但它不起作用。我正在使用Prototype js
(我知道如何在绑定Javascript中的.click函数时传递事件..而不是在html中调用onclick
。.使用Jquery,但我必须调试这段代码)
虽然这是公认的答案,但托托蒂科下面的答案更好:)
尝试让onclick js使用“return”,以确保使用所需的返回值
<button type="button" value="click me" onclick="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();
return false;
} else {
return true; }
}
<button type="button" value="click me" onclick="return check_me();" />
function check_me(ev) {
ev.preventDefault();
B.隔离Javascript:
上述两种解决方案都适用于小型项目,或者是一种黑客式的快速肮脏的解决方案,但对于大型项目,最好将HTML与Javascript分开
只需将这两个文件放在同一文件夹中:
- example.html:
我会将您的绑定更改为:
function check_me(ev) {
ev.preventDefault();
alert("Hello World!")
}
document.getElementById("my_button").addEventListener("click", check_me);
不完全是我想要的。。但我会把它标记为已回答。谢谢。内联javascript现在非常不受欢迎!嗯,它已经10年了。另一个更好的答案是,我会引导人们去那里……你不能仅仅假设“事件”是定义好的。您的代码给出了以下运行时错误:“ReferenceError:未定义事件”。示例代码:函数awesome(){console.info(event);}awesome()@HOLDOFFINGER假定在内联事件发生时调用此函数。为什么要直接在事件之外调用它。我很想知道如果使用addEventListener会是什么样子?例如,它会像这样吗?ButtoneElement.addEventListener(“单击”,检查我(事件))。@CodeNovel with
。addEventListener(“单击”,检查我)代码>事件自动作为第一个参数传递。因此,如果您像check_me(e){…}
这样定义函数,那么您可以在函数中使用事件e
,而不会出现问题。有时人们会这样构造它,但这不是必需的代码>这个问题,@toto_tico的回答集中在我们所谓的“内联事件”上,事件处理程序被定义为一个字符串,该字符串被解析并计算为一个函数调用(或其他有效的JavaScript)。您可以只写一行,比如单击
,这一行将被执行。您还可以定义两个函数,如。。。onclick=“check_me(event);other_func(event);”..
如果您真的愿意,这两个选项都将执行。除了关键字事件
,您还可以传递此
,它是对调用元素的引用。
<!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>
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<button id='my_button' type="button">Click Me!</button>
<!-- put the javascript at the end to guarantee that the DOM is ready to use-->
<script type="text/javascript">
function check_me(ev) {
ev.preventDefault();
alert("Hello World!")
}
<!-- add the event to the button identified #my_button -->
document.getElementById("my_button").addEventListener("click", check_me);
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<button id='my_button' type="button">Click Me!</button>
<!-- put the javascript at the end to guarantee that the DOM is ready to use-->
<script type="text/javascript" src="example.js"></script>
</body>
</html>
function check_me(ev) {
ev.preventDefault();
alert("Hello World!")
}
document.getElementById("my_button").addEventListener("click", check_me);
<button type="button" value="click me" onclick="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; }
}