按钮需要点击两次才能触发函数。

3
我知道这可能很难理解,但请尝试一下。请看截图。
小的输入框名称为“murl”。
使用add()提交表单。如果murl为空,则必须直接提交表单;如果不为空,则必须检查murl条目是否存在于数据库中。如果不存在,则调用add()
问题是必须点击两次button才能触发函数。
按钮上的代码如下:
<button type="button" value="My button value" onclick="javascript: niju();" name="microsubmit" id="microsubmit">button</button> 
所调用的JavaScript代码为:
function niju()
{
    var flag=1;
    var micro=document.getElementById('murl').value;

    $('#microsubmit').click(function()
    {

        if(micro=="")
        {
            add();
        }
        else
        {
            //remove all the class add the messagebox classes and start fading
            $("#msgbox")
                .removeClass()
                .addClass('messagebox')
                .text('Checking...')
                .fadeIn("slow");

            //check the username exists or not from ajax
            $.post("<?php echo SITE_ROOT;?>inc/user_availability.php",
                { murl: $("input:murl").val()  },
                function(data)
                {
                    if(data=='no') //if username not avaiable
                    {
                        $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox
                        {
                            //add message and change the class of the box and start fading
                            $(this)
                                .html('This User name Already exists')
                                .addClass('messageboxerror')
                                .fadeTo(900,1);

                            flag=0;
                        });
                    }
                    else
                    {
                        $("#msgbox")
                            //start fading the messagebox
                            .fadeTo(200,0.1,function()
                            {
                                //add message and change the class of the box and start fading
                                $(this)
                                    .html('Username available to register')
                                    .addClass('messageboxok')
                                    .fadeTo(900,1);   

                                flag=1;
                                add();
                            });
                    }
                });
        }
    });

    if(micro=="" && flag==1)
    {
        add();
    }
}

屏幕截图:

屏幕截图


优秀的工作,修复了编辑新月。 - Paolo Bergantino
3个回答

7
因为你是在函数内定义了#microsubmitclick事件,所以需要点击两次。第一次单击时,绑定了事件处理程序,第二次事件处理程序已经就位并被触发。我没有深入研究你想要实现的逻辑,但我的猜测是如果你将事件绑定器移到函数外部,并确保所有变量都在正确的作用域内,那么它将起作用。

2

当您第一次加载页面时,点击处理程序未连接到按钮,只有在您第一次单击按钮并调用niju()并挂接单击事件后才会发生。您需要执行以下操作:

$(document).ready() { 
   niju();
}

并且从按钮声明中删除onclick


0
将你的标志移出函数niju。
 var flag=1;
function niju()
{
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接