2017-04-24 52 views
0

我已經得到了:<INPUT TYPE = 「顏色」/> - 開放的ColorPicker與JS

<span class="opener">Open</span> 
<input type="color" class="btn-invisible" /> 

,我想打開使用JS該字段的顏色拾取。我曾嘗試過:

document.querySelector('span.opener') 
    .addEventListener('click', 
    e => document.querySelector('.btn-invisible').focus() 
); 

但是,不打開顏色選擇器。如果這可以通過JS完成,怎麼樣?

+2

爲什麼'.focus的()'代替'。點擊()'? – Xufox

+1

[與沒有類型=顏色的javascript打開瀏覽器的標準顏色拾取](http://stackoverflow.com/questions/29676017/open-browser-standard-colorpicker-with-javascript-without-type-color) –

回答

2

顏色輸入控件需要點擊(如按鈕)。

document.querySelector('span.opener') 
 
    .addEventListener('click', 
 
    e => document.querySelector('.btn-invisible').click() 
 
);
.btn-invisible { 
 
    display: none; 
 
}
<span class="opener">Open</span> 
 
<input type="color" class="btn-invisible" />

+0

黑文的可能的複製對這種表單元素上的'.click()'方法不瞭解,但它的作用像魅力,謝謝! – philipp

+0

在邊緣v41中不起作用 – Artin

+0

儘管它在單擊('.focus()')之前將輸入焦點並輕輕隱藏(例如,「不透明度:0」),它在Edge中工作。遊樂場:http://jsbin.com/vejuqif/edit – Artin

1

沒有必要對JavaScript的,只是包裝標籤圍繞輸入:

<label> 
 
    Open 
 
    <input type="color" style="display:none"> 
 
</label>

+0

我會給它拍! – philipp

+0

我問過一個JS解決方案,所以接受一個非JS解決方案是不對的,即使我現在比js更喜歡它了) – philipp

+0

是的,我意識到這不完全是你所要求的,而是想法無論如何,值得指出:)。總的來說,最好避免讓JS做不必要的工作。更多的事件聽衆=更多的意外後果的機會。 – Damon