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

How can I get a OnClick Event to execute only once?

我创建了一个 <asp:textbox id="TextBoxPassnummer" OnClick="openPopup()" />。当用户点击文本框时,弹出窗口 windows 通过 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");
}

弹出窗口-Windows 包含有关在文本框中输入内容的信息 (TextBoxPassnummer)。用户关闭弹出窗口后,如果他单击文本框输入信息,方法 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;  %>
    }

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

function openPopup() {
    alert("popup opend");
}

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

您有两个选择:

存储一个变量windowHasOpened,将其设置为false。然后里面openPopup只继续打开windowifwindowHasOpened === false。第一次调用该函数时,设置windowHasOpened = true.

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

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

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

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

如果你愿意,你可以使用像 jQuery 这样的库,但它可能有点矫枉过正(普通的 JavaScript 并不难)。