无法在jquery中调用javascript函数

时间:2015-01-17 10:50:26

标签: javascript jquery

我使用了两个jqueries库

   <script src="/Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
   <script src="/Scripts/jquery-ui.min.js" type="text/javascript"></script>

我有一个名为onSubmit();

的函数
   function onSubmit() 

     {if ($.trim($("#password").val()) != "") {
           $("#Command").val("LOGIN");
          }
     }

当我尝试使用onSubmit函数时,visual studio中的intelicense会毫无问题地找到它,但在运行时我会收到错误undefined onSubmit。 我尝试在这段代码中使用onSubmit函数:

$(function () {
$("#slider").draggable({
    axis: 'x',
    containment: 'parent',
    drag: function (event, ui) {
        if (ui.position.left > 550) {
            $("#well").fadeOut();
            onSubmit(); //this line get undefined error
        } else {
             ("opacity", 100 - (ui.position.left / 5))
        }
    },
    stop: function (event, ui) {
        if (ui.position.left < 551) {
            $(this).animate({
                left: 0
            })
        }
    }
});

我在每次操作后都在代码底部声明了onSubmit函数。我不确定它是否会引起问题。

更新:我改变了我的声明:

   window.onSubmit()= function() {
       if ($.trim($("#password").val()) != "") {
           $("#Command").val("LOGIN");
       }
    }

1 个答案:

答案 0 :(得分:1)

JavaScript函数在其包含范围内定义。如果函数定义发生在另一个函数内部,那么它只会在该函数内定义,并且不能在其他地方访问。如果函数是在任何函数之外定义的,那么它将被全局定义,这相当于驻留在window对象上。

您可以通过直接在window对象上分配函数来显式创建函数:

window.onSubmit = function() { ... };

请注意,在这种情况下应该包括尾随分号,因为赋值是一个表达式;函数定义被称为“表达式”,因此语句必须以分号结束。

如果一个函数是全局定义的,那么无论范围如何,所有代码都可以访问它。