jQuery – Erkennt, wenn ein Benutzer OUT aus einem Textfeld des Eingabetyps klickt

Lesezeit: 3 Minuten

Ich möchte erkennen, wenn ein Benutzer OUT aus einem Eingabetyp Textfeld klickt, nicht in.

Hier ist, was ich habe, aber beide Ereignisse werden beim Klicken im Inneren ausgelöst (Fokus):

<input id="title" val="hello" />

$("#title").focusout(function() {
    console.log('inside');
}).blur(function() {
    console.log('outside');
});

  • blur ist gut genug für das, was Sie brauchen. was genau ist die frage?

    – Teja Kantamneni

    3. Januar 2011 um 15:53 ​​Uhr

  • Bist du dir sicher? Sie feuern beide für mich, wenn Verlassen das Feld. Beispiel

    – Benutzer113716

    3. Januar 2011 um 15:55 Uhr


  • Bitte präzisieren Sie Ihre Frage. Ihre Beschreibung dessen, was passiert, ist das Gegenteil dessen, was für diese Ereignisse passieren sollte. Sagst du das wirklich focusout und blur Feuer beim Klicken Innerhalb die Eingabe?

    – Benutzer113716

    3. Januar 2011 um 16:04 Uhr


  • ziemlich sicher $(el).focusout().blur() ist eine schlechte Idee … aber ich mag das Konzept, außerhalb eines Elements zu klicken!

    – Derek Adair

    3. Januar 2011 um 16:12 Uhr

Benutzer-Avatar
Jäger

Sie können Ihre binden focus und blur Veranstaltung so:

<input id="title" val="hello" type="text" />

$("#title").focus(function() {
    console.log('in');
}).blur(function() {
    console.log('out');
});

focusout ist nicht erforderlich, da es auf Ereignisblasen für untergeordnete Elemente ausgerichtet ist: http://api.jquery.com/focusout/

Sie könnten ein kleines Plugin schreiben, z

(function($){
  $.fn.outside = function(ename, cb){
      return this.each(function(){
          var $this = $(this),
              self = this;

          $(document).bind(ename, function tempo(e){
              if(e.target !== self && !$.contains(self, e.target)){
                  cb.apply(self, [e]);
                  if(!self.parentNode) $(document.body).unbind(ename, tempo);
              }
          });
      });
  };
}(jQuery));

..und verwenden Sie es wie folgt:

$('#title').outside('click', function(e) {
    console.log('outside');
});

Beispiel: http://www.jsfiddle.net/tGnun/

  • sehr schlau. Vielleicht könnten Sie erklären, was das Innenleben bewirkt?

    – Derek Adair

    3. Januar 2011 um 16:10 Uhr

  • Wie kann ich dasselbe für das Textfeld tun, das nach dem Laden der Seite mit js/jquery generiert wird?

    – Ruchita Sheth

    18. Januar 2020 um 12:26 Uhr

Es sieht aus wie focusout() und blur() werden beide ausgelöst, wenn Sie außerhalb des Textes klicken. Versuchen Sie es mit focus() stattdessen. Hör zu hier.

  • OP will keinen Fokus. Er möchte, dass der Code beim Verlassen der Eingabe ausgelöst wird.

    – Benutzer113716

    3. Januar 2011 um 15:58 Uhr

  • @patrick, ja, aber er sagte, dass beide beim Betreten der Eingabe feuern. Für mich haben beide beim Verlassen geschossen (wie Sie erwähnt haben), also nahm ich an, dass er vielleicht etwas durcheinander war. Mein jsfiddle hat eine Warnung, die das Ein- und Ausgehen auslöst, also dachte ich, es wäre es wert, gepostet zu werden.

    – Aaron Hathaway

    3. Januar 2011 um 16:01 Uhr

Ich bin mir nicht 100% sicher, ob du das willst, aber hier ist ein Versuch:

<html>
<head>
<title>Example</title>
<script src="https://stackoverflow.com/questions/4585890/jquery-1.4.3.js" type="text/javascript"></script>
</head>
<body id="body">
<script>
    $("document").ready( function() 
    {   $("#body").click( function()
        { alert("body"); } );
        $("#input").click( function(event)
        { alert("input"); event.stopPropagation(); } );
    } );
</script>
<h2>input below</h2>
<input id="input" type="text"/>
</body>
</html>

1179160cookie-checkjQuery – Erkennt, wenn ein Benutzer OUT aus einem Textfeld des Eingabetyps klickt

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy