我试图通过Ajax提交表单,但它不调用函数?
我在Firebug控制台得到这个错误:
ReferenceError: CreateUser is not defined
CreateUser()
我用来调用这个函数的按钮:
<input type="button" onclick="CreateUser()" id="RegisterUserBtn" class="btn" value="Sign Up" name="">
我的函数:
<script language="JavaScript">
$(document).ready(function(e){
function CreateUser(){
alert('CreateUser SignUp button is clicked.');
}
});
</script>
是什么导致这个问题?为什么它找不到函数名?
你在这里混合了两种风格的javascript编码:"旧风格"与事件属性在你的html代码。和"不引人注目的javascript"与$(文档)。准备好了。我的建议是始终使用不引人注目的javascript:
不要在你的html中使用onclick。jQuery可以帮助您将所有Javascript排除在html代码之外。您已经为您的按钮创建了ID。<input type="button" id="RegisterUserBtn" class="btn" value="Sign Up" name="">
所以你的jQuery可以像这样:
$(document).ready(function(e) {
function CreateUser() {
alert('CreateUser SignUp button is clicked.');
}
$('#RegisterUserBtn').on('click', CreateUser);
});
这种HTML和Javascript的分离被称为"不引人注目的Javascript"。查看现场演示:http://jsfiddle.net/bjelline/nySxm/
您通过将CreateUser
函数放入匿名函数中来创建围绕它的闭包。CreateUser
对于包含函数的作用域是"局部的",并且不暴露于定义onclick事件的全局作用域。
只需将函数置于$(document).ready
块之外
如果你正在使用jquery,那么试试这个
<script language="JavaScript">
$(document).ready(function(e){
$("#RegisterUserBtn").click(function(){
alert('CreateUser SignUp button is clicked.');
});
});
</script>
希望能有所帮助
如果你想在点击事件上运行CreateUser
函数,然后删除$(document).ready
函数并在标题内声明你的函数。$(document).ready
内部的函数在内容加载之后加载。在函数声明之前加载HTML。
或者你可以在函数上使用jquery。
$(document).ready(function(e) {
$('#RegisterUserBtn').on('click', function() {
alert('CreateUser SignUp button is clicked.');
});
});