我使用了两个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");
}
}
答案 0 :(得分:1)
JavaScript函数在其包含范围内定义。如果函数定义发生在另一个函数内部,那么它只会在该函数内定义,并且不能在其他地方访问。如果函数是在任何函数之外定义的,那么它将被全局定义,这相当于驻留在window
对象上。
您可以通过直接在window
对象上分配函数来显式创建函数:
window.onSubmit = function() { ... };
请注意,在这种情况下应该包括尾随分号,因为赋值是一个表达式;函数定义被称为“表达式”,因此语句必须以分号结束。
如果一个函数是全局定义的,那么无论范围如何,所有代码都可以访问它。