2013-07-18 6 views
5

Innerhalb JQuery sind wir in der Lage auszulösen ‚Klick‘ an einem bestimmten Element mit:Trigger-Klick auf HTML 5 Farbauswahl mit JQuery

$(selector).trigger('click'); 

Obwohl ich habe Schwierigkeiten damit, wenn das Element ein Kommissionierer HTML 5 Farbe und die Eigenschaft 'display' wird von CSS auf 'none' gesetzt.

Normalerweise können wir dies tun, wenn der Eingabetyp ‚Datei‘ oder ...

So ist es trotzdem dieses mit JQuery oder schlicht Javascript zu tun bekommen?

HTML-Elemente

input type="color" id="fontSel" style="display: none;" 
div id="fontWrap" 

JQuery

$("#fontWrap").click(function(){ 
    $("#fontSel").trigger("click"); 
}); 



ANTWORT

Ändern Sie den Stil:

input type="color" id="fontSel" style="position:absolute; left:-9999px; top:-9999px;" 
+1

Wollen Sie sagen, dass Sie den Klick auslösen können, wenn die Eingabe sichtbar ist? – adeneo

+0

Sie können es nur auslösen, wenn der Benutzer irgendwo im Dokument klickt –

+0

Wenn das Element keine Standard-Klickfunktionalität hat oder das Element kein '.click()' -Ereignis hat, das an jQuery gebunden ist, funktioniert das nicht . Wenn es so etwas wie ' Go!' ist, wird jQuery den Klick nicht auslösen. – Ohgodwhy

Antwort

8

Diese Notwendigkeit Interaktion mit dem Benutzer, dh Sie können es nicht ohne Benutzer auslösen kann irgendwo in dem Dokument klicken:

DEMO

$("#fontWrap").click(function() { 
    $("#fontSel")[0].click(); 
}); 
+1

Danke für Ihre Antwort. Anstatt also die Eigenschaft 'display' auf 'none' zu setzen, können wir dasselbe Ergebnis erzielen, indem wir das Element irgendwo platzieren, was für den Benutzer nicht sichtbar ist. – mdoust

+1

ya, genau, unter Verwendung der absoluten Position, z. –

+0

@mdoust Ich überprüfe nur, ya jquery Trigger scheint hier zu arbeiten. –

0

Die akzeptierte Antwort funktioniert gut, außer funktioniert es nicht in MS Edge (Ich persönlich mag es nicht sehr, aber es ist immer noch 6% Marktanteil ab dem Jahr 2017, dh jeder ~ 15. Besucher Ihrer Website hat es)

Also hier ist ein guter alter „Hover-Hack“ Trick, der in allen Browsern funktioniert:

<input type="color" style='opacity:0;width:100px;position:absolute;'/> 
<button>clickme</button> 

und dann an das Farbelement bindet onchange den ausgewählten Wert zu erhalten. Experimentieren Sie mit Breiten/Höhen für Ihr Layout.

https://jsfiddle.net/Lnzm0sry/2/

PS. Ich weiß, es ist "hacky", aber ich habe keine bessere Idee.