JavaScript代码编辑

时间:2014-12-09 10:16:07

标签: javascript jquery html dom button

很抱歉,如果这是一个愚蠢的问题,我在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();
                    }
                });
            }
        });
    }
}

4 个答案:

答案 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()