2016-08-05 11 views
0

Ich habe eine <asp:textbox id="TextBoxPassnummer" OnClick="openPopup()" /> erstellt. Wenn ein Benutzer auf das Textfeld klickt öffnet sich ein Popup-Fenster über JS:Wie kann ich OnClick-Ereignisse nur einmal ausführen?

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"); 
} 

Das Popup-Fenster enthält Informationen darüber, was in der Textbox (TextBoxPassnummer) einzugeben. Nachdem der Benutzer das Popup-Fenster geschlossen hat, sollte die Methode openPopup() nicht erneut ausgeführt werden, wenn er auf das Textfeld klickt, um seine Informationen einzugeben. Mit meinem oben gezeigten Code öffnet sich die PopupWindows jedes Mal.

Wie löse ich dieses Problem, einen Vorschlag? Dank ...

Versucht es wie folgt zu:

 <% 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; %> 
    } 
+1

Sie haben nicht gezeigt, wie Sie das Ereignis anhängen, aber jQuery 'one ('click', fn)' würde tun, was Sie brauchen –

+0

Ja, ich habe. Schau dir die erste Zeile der Frage an. @RoryMcCrossan –

+0

Ah ja, das habe ich verpasst. –

Antwort

3

Wenn Sie jQuery zur Verfügung haben, können Sie one verwenden. Es bindet einen einmaligen Ereignis-Listener, der sich nach der ersten Verwendung selbst auflöst. Wenn Sie dies verwenden, müssen Sie die onClick="openPopup()" aus dem Element entfernen.

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>

+0

Wie kann ich die OpenPopup-Funktion an meine TextBox mit Ihrer Lösung anpassen? @eisbehr –

+0

jQuery macht das für Sie. '$ (" # TextBoxPassnummer ")' wählt den Text boy und '.one (" click ", openPopup);' fügt das 'click'-Ereignis hinzu. @AlessandroMinneci – eisbehr

0

Sie haben zwei Möglichkeiten:

Shop eine Variable windowHasOpened, setzen Sie ihn auf false. Dann innerhalb openPopup nur weiterhin das Fenster öffnen, wenn windowHasOpened === false. Wenn die Funktion zum ersten Mal aufgerufen wird, setzen Sie windowHasOpened = true.

OR

Fügen Sie den Ereignis-Listener in Code wie (stellen Sie sicher, dass der Code ausgeführt wird, nachdem das Dokument geladen ist).

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

Dann in openPopup, entfernen Sie den Hörer wie folgt aus:

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

Sie eine Bibliothek wie jQuery verwenden können, wenn Sie wollen, aber es ist wahrscheinlich übertrieben (plain JavaScript ist nicht so schwer).

+0

Ich fügte ein snipped zu meiner Frage mit Ihrer Methode, aber es funktioniert nicht, können Sie mir sagen, was ich falsch gemacht habe. (am Ende meiner Frage) –

+0

können Sie mir helfen, meine Frage gleich wieder zu bekommen. Ich wurde von der Frage verbannt, weil ich nicht wissen konnte, wie man fragt und wie man dann programmiert, als ich das fragte.du würdest mir wirklich mit einem upvote <3 helfen –

Verwandte Themen