2017-01-23 7 views
0

Ich möchte der Benutzer die gesamte Eingabefeld auswählen, wenn er darauf klickt.Click-Ereignis wird nicht ausgelöst

In meinem Fall das Eingabefeld ist:

 <label for="bla">My checkbox</label> 
     <input type="input" id="bla" name="check" value="checked" /> 

Um dies zu tun, schrieb ich folgendes JS:

function SelectAll(bar){ 
    bar.focus(); 
    bar.select(); 
    console.log(bar); 
}  
window.onload=function() 
{ 
    var bla=document.getElementById("bla"); 
    bla.addEventListener('click',SelectAll(bla),false);  
}; 

Aber alles, was ich in der Konsole ist <input type="input" value="checked" name="check" id="bla"> einmal und egal wie viel klick ich kann nicht mehr bekommen.

+0

Soll der Benutzer Ihre Eingabe auswählen, wenn er auf Ihre Seite kommt –

+0

Nein, ich möchte, dass er ausgewählt wird, wenn er darauf klickt. Und nur dann. – Vringar

+0

Wenn Sie auf Ihre Eingabe klicken, fügen Sie Attribut Autofokus hier hinzu ist eine Referenz für wie Autofokus als Attribut hinzugefügt wird http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_autofocus –

Antwort

1

addEventListener Callback-Referenz sollte keine Parameter haben.

.addEventListener('click', SelectAll)

Durch (bla) Zugabe wird es tatsächlich als SelectAll(bla)(element) genannt wird, was wollen nicht das, was Sie.

-2

Dieses Versuchen:

$("#bla").click(function() { 
    bla.addEventListener('click',SelectAll(bla),false);  
    }); 
function SelectAll(element){ 
    element.focus(); 
    element.select(); 
    console.log(element); 
} 
+0

Das verwendet jQuery und ich versuche aktiv vermeide jegliche Art von Rahmen. – Vringar

+1

Das löst das Problem nicht, es macht es noch schlimmer. Abgesehen von der Tatsache, dass Sie jQuery hinzufügen, fügt Ihr gesamter Code eine jQuery-Klickbindung hinzu, die bei On-Click die originale Klickbindung hinzufügt, die in JavaScript geschrieben wurde und immer noch dasselbe Problem hat wie ursprünglich. Außerdem wird bei jedem Klick die jQuery-Bindung ausgeführt und eine weitere Klickbindung hinzugefügt. – Nope

0

meine Forschung i auf folgende consclusions kommen zusammenfassend:

addEventListener Rückrufreferenz keine Parameter haben sollte, da es das Ereignis an die Funktion übergeben wird.

Als solche ist die listener.addEventListener('click', SelectAll, false) die richtige Art zu implementieren.

Da die event übergeben wird, aber Sie mit der tatsächlichen element arbeiten möchten, müssen Sie bar.target verwenden, um darauf zuzugreifen.