2017-03-28 2 views
0

Wie Sie unten sehen können, gibt es einige historische Adressen, die ich chan in einem Formular auswähle. Wenn ich also eins auswähle und "Enter" drücke, wird die Farbe angepasst (grün, wenn es eine Mailadresse ist, oder rot bleiben, wenn es ist nicht). Ich habe diese mit diesem Stück Code (JQuery):In JQuery, wie Sie eine Aktion ausführen, wenn Sie eine Eingabe mit einem Mausklick auswählen?

$("#mail").keyup(function() { 

    if(!validateEmail($("#mail").val())) { 
     $("div.mail").removeClass("has-success"); 
     $("div.mail").addClass("has-error"); 
    } 
    else{ 
     $("div.mail").removeClass("has-error"); 
     $("div.mail").addClass("has-success"); 
     } 

    }); 

enter image description here

Aber das Problem ist, wenn ich mit der Maus, um die „Geschichte“ E-Mail-Adresse klicken Sie anstelle von „Enter“ drücken, passiert nichts (auch wenn ich die Mailadresse wähle). Also habe ich mit anderen JQuery-Funktionen wie .mouseup() oder .click() versucht, aber es funktioniert immer noch nicht.

Haben Sie eine Idee?

Antwort

0

Versuchen Sie folgendes:

$('#selector').focus(function(){ 
    // your code here 
}); 

focus Ereignis ausgelöst wird, wenn das Element den Fokus erhalten entweder von der Maus Auswahl oder aus Tab.

+0

Hallo, es funktioniert nicht, sorry – ThisIsMe

0

Sie könnten die jQuery.change() Methode versuchen wollen:

$("#mail").change(function() { 

    if(!validateEmail($("#mail").val())) { 
     $("div.mail").removeClass("has-success"); 
     $("div.mail").addClass("has-error"); 
    } 
    else{ 
     $("div.mail").removeClass("has-error"); 
     $("div.mail").addClass("has-success"); 
    } 

}); 
+0

Sorry, nicht funktioniert – ThisIsMe

0

Ich empfehle blur Verwendung würde. Dies wird ausgelöst, wenn das Element den Fokus verliert. Die Verwendung von keyup wird jedes Mal ausgelöst, wenn eine Taste gedrückt wird, was nicht das ist, was Sie tun möchten.

$("#mail").on('blur', function() { 
    if(!validateEmail($("#mail").val())) { 
     $("div.mail").removeClass("has-success"); 
     $("div.mail").addClass("has-error"); 
    } 
    else{ 
     $("div.mail").removeClass("has-error"); 
     $("div.mail").addClass("has-success"); 
    } 
}); 
+0

Hallo, es ist nicht das, was ich will, ich brauche die Farbe zu ändern, wenn ich eine Geschichte Element auswählen mit dem Klick. – ThisIsMe

+0

Ein Verlaufselement in einem Eingabefeld? Diese Art der Überprüfung bei jedem Tastendruck ist etwas übertrieben. Egal was, sie beginnen nicht mit einer gültigen E-Mail-Adresse beim ersten Tastendruck. – krillgar

0

$(function() { 
 
    $("#mail").on('keyup', function() { 
 

 
    if (!validateEmail($("#mail").val())) { 
 
     $("#mail").removeClass("has-success"); 
 
     $("#mail").addClass("has-error"); 
 
    } else { 
 
     $("#mail").removeClass("has-error"); 
 
     $("#mail").addClass("has-success"); 
 
    } 
 

 
    }); 
 

 
$('input').on('change', function() { 
 

 
    if (!validateEmail($("#mail").val())) { 
 
     $("#mail").removeClass("has-success"); 
 
     $("#mail").addClass("has-error"); 
 
    } else { 
 
     $("#mail").removeClass("has-error"); 
 
     $("#mail").addClass("has-success"); 
 
    } 
 
}); 
 

 
    function validateEmail(email) { 
 
    var re = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
 
    return re.test(email); 
 
    } 
 
});
.has-success { 
 
    border-color: green; 
 
} 
 

 
.has-error { 
 
    border-color: red; 
 
}
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 
 
<input id='mail' value='' />

+0

Hallo, Run Snippet => Klick auf den Eintrag => wähle einen Verlauf mit Pfeilen => klicke mit dem Mund auf => es ist immer noch rot (statt grün) – ThisIsMe

Verwandte Themen