Firebug控制台,给出错误“函数未定义”

时间:2013-04-27 07:40:44

标签: php javascript jquery html function

我正在尝试通过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>

导致此问题的原因是什么?为什么它找不到函数名?

4 个答案:

答案 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.');
   });

});