0

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

4 回答 4

4

您在这里混合了两种样式的 javascript 编码:“旧样式”与您的 html 代码中的事件属性。和带有 $(document).ready 块的“不引人注目的 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/

于 2013-04-27T07:44:48.410 回答
2

您正在CreateUser通过将函数放在匿名函数中来围绕函数创建闭包。CreateUser在包含函数的范围内是“本地的”,并且不会暴露在定义 onclick 事件的全局范围内。

只需将功能放在$(document).ready块之外。

于 2013-04-27T07:44:30.213 回答
1

如果您使用的是 jquery,请尝试此操作

<script language="JavaScript">
    $(document).ready(function(e){

       $("#RegisterUserBtn").click(function(){
            alert('CreateUser SignUp button is clicked.');
        });
    });
</script>

希望这可以帮助

于 2013-04-27T07:47:19.920 回答
1

如果你想CreateUser在点击事件上运行函数,那么删除$(document).ready函数并在标题中声明你的函数。$(document).ready内容加载后加载内部函数 。您的 html 在函数声明之前加载。

或者您可以函数上使用 jquery。

$(document).ready(function(e) {

   $('#RegisterUserBtn').on('click', function() {
       alert('CreateUser SignUp button is clicked.');
   });

});
于 2013-04-27T07:55:20.503 回答