我正在尝试通过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>
导致此问题的原因是什么?为什么它找不到函数名?
答案 0 :(得分:4)
您在这里混合了两种javascript编码样式:“旧样式”,其中包含html代码中的事件属性。以及$(document).ready块的“unobstrusive 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/
答案 1 :(得分:2)
通过将其放在匿名函数中,您可以在CreateUser
函数周围创建一个闭包。 CreateUser
对于包含函数的范围是“本地的”,并且不会暴露到定义onclick事件的全局范围。
只需将功能置于$(document).ready
块之外。
答案 2 :(得分:1)
如果您使用的是jquery,请尝试使用
<script language="JavaScript">
$(document).ready(function(e){
$("#RegisterUserBtn").click(function(){
alert('CreateUser SignUp button is clicked.');
});
});
</script>
希望这有帮助
答案 3 :(得分:1)
如果您想在点击事件上运行CreateUser
函数,请删除$(document).ready
函数并在标题内声明您的函数。内容加载后加载$(document).ready
内的函数。您的html在函数声明之前加载。
或者你可以使用jquery on函数。
$(document).ready(function(e) {
$('#RegisterUserBtn').on('click', function() {
alert('CreateUser SignUp button is clicked.');
});
});