很抱歉,如果这是一个愚蠢的问题,我在JQuery做一个项目,我没有时间进行实际学习,所以我实际上是直接进入。
所以我正在编辑一段最初的代码:
$('#login').click(login);
因此,当单击登录按钮时,将调用登录功能。添加行:
$('#login').click();
该行按预期工作后,触发单击,然后运行登录功能。但只需用以下内容替换这两行:
login();
HTML
<form action="#">
<div class="form-group">
<input type="text" id="nickname" class="form-control" placeholder="Enter nickname" autofocus>
</div>
<button type="submit" id="login" class="btn btn-primary btn-block">Connect</button>
</form>
的Javascript
var elem = document.getElementById("nickname");
elem.value = "tom";
$('#login').click(login);
$('#login').click();
根本不起作用?我不明白。当然我只是调用函数并绕过必须在DOM中使用实际按钮?
更新 我确实在下面定义了函数login,其中click函数在代码本身中,我觉得在这里发布代码是不必要的,因为它只调用函数是问题。
更新2 这是被调用的登录函数:
function login(event) {
event.preventDefault();
params = {
login: $('#nickname').val(),
password: '123123123' // default password
};
// check if user did not leave the empty field
if (trim(params.login)) {
$('#loginForm form').hide();
$('#loginForm .progress').show();
// chat user creation
QB.users.create(params, function(err, result) {
if (err) {
onConnectFailed();
alertErrors(err);
} else {
chatUser = {
id: result.id,
login: params.login,
pass: params.password
};
// chat user authentication
QB.login(params, function(err, result) {
if (err) {
onConnectFailed();
alertErrors(err);
} else {
connectChat();
}
});
}
});
}
}
答案 0 :(得分:1)
取决于您调用login
函数的范围。
检查您的位置
function login(){
//some code
}
并确保您调用该函数的代码区域可以看到它。
阅读here
更新
查看您的代码我可以看到您没有login
函数,但您只是提交表单,因为登录输入的类型为“submit”。
尝试
$("#idOfTheForm").submit();
假设
<form action="#" id="idOfTheForm">
更新2
我认为您的代码缺少一些信息。正如你所说,如果没有处理程序,就不可能发生某些事情。如果你没有login
函数,那么你的表单就不会发生任何动作。也许你在其他文件中有其他代码。
更新3
我认为login
函数中唯一的问题是它有1个参数输入和你使用它的第一行代码(错误会破坏执行)。
以这种方式尝试
function login(event) {
if (event != null)
event.preventDefault();
//other code
}
然后使用login();
答案 1 :(得分:0)
$(&#39;#login&#39;)。click()就像一个触发器;当用户在#login上小鸡时,它会在()
内启动代码$( "#login" ).click(function() {
alert( "Handler for .click() called. on login" );
});
如果你这样做
function login(){}
将会有一个功能可以完成你想要的工作但是永远不会调用该函数。
如果你这样做
function login(){}
login();
它表示您有一个功能可以完成您想要的工作,并且在代码运行时启动该功能,而不是在用户点击某些内容时。
答案 2 :(得分:0)
当你这样做时
$('#login').click(login);
您告诉您希望将login()
函数作为“click
”元素上事件“login
”的处理程序进行调用。
在上面的代码中,我看不到您在login()
函数中定义的位置。如果您执行了login()
和“没有任何事情发生”,那是因为该函数未在您调用它的地方定义...
您的HTML代码中应该有一个如下所示的快照:
<script>
function login(...){
//....body....
}
</script>
答案 3 :(得分:0)
在前两种情况下,您拥有元素的ID&#34;登录&#34;写入函数login()的地方。但在最后一种情况下,你的代码中只有一个函数,你没有调用它。所以,它没有用。
for first two cases i think your code is some thing like
<div id="login">login</div>
<script>
$('#login').click(function(){
//some code
});
</script>
你可以在这里找到类似的问题(jQuery.click() vs onClick)。 对于第三个,没有触发login()