如何让OnClick事件只执行一次?

时间:2016-08-05 10:40:28

标签: javascript jquery popupwindow

我创建了<asp:textbox id="TextBoxPassnummer" OnClick="openPopup()" />。当用户点击文本框时,弹出窗口将通过JS打开:

function openPopup(){
    var myWindow = newwindow = window.open("http://localhost:59969/test.aspx", "Anleitung", "width=200, height=800, toolbars=0, width=950, left=200,top=200,scrollbars=1,resizable=1");
}

Popup-Windows包含有关在文本框中输入内容的信息(TextBoxPassnummer)。用户关闭Popupwindow后,方法openPopup()如果单击文本框输入其信息,则不应再次执行。使用上面显示的代码,PopupWindows每次都会打开。

如何解决此问题,任何建议?感谢...

也是这样尝试的:

     <% bool windowHasOpened = false;     %>

    if(windowHasOpened == false){


    function openPopup(){


        var myWindow = newwindow = window.open("http://localhost:59969/test.aspx", "Anleitung", "width=200, height=800, toolbars=0, width=950, left=200,top=200,scrollbars=1,resizable=1");
        <%windowHasOpened = true;  %>
    }

2 个答案:

答案 0 :(得分:3)

如果您有jQuery,可以使用one。它将绑定一次性事件监听器,在第一次使用后解除绑定。使用此功能时,您必须从onClick="openPopup()"元素中删除#TextBoxPassnummer

&#13;
&#13;
function openPopup() {
    alert("popup opend");
}

$("#TextBoxPassnummer").one("click", openPopup);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="TextBoxPassnummer"></textarea>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您有两种选择:

存储变量windowHasOpened,将其设置为false。然后在openPopup内只有windowHasOpened === false才会继续打开窗口。第一次调用该函数时,请设置windowHasOpened = true

OR

在代码中添加事件侦听器(确保代码在文档加载后运行)。

document.getElementById("TextBoxPassnummer").addEventListener('click', openPopup);

然后在openPopup中,删除这样的监听器:

document.getElementById("TextBoxPassnummer").removeEventListener('click', openPopup);

如果你愿意,你可以使用像jQuery这样的库,但它可能有点过分(简单的JavaScript,但是很难)。

相关问题