당신은 두 요소에 입력 변경을들을 수 있습니다.
입력은 7 문자 16 진수 문자열 만 허용하므로 올바르게 작동하려면 4 자리의 약식 16 진수 문자열을 변환해야합니다.
편집
var coltext = document.getElementById('coltext');
var colpick = document.getElementById('color');
// Listen to changes in the colortext input
coltext.addEventListener("input", function(e){
// If the input is a valid 7 character hex string
// assign this value to the color picker
if(this.value.match(/^#([0-9a-f]{6})$/)) {
\t colpick.value = this.value;
}
// If the input is a valid 4 character hex string
// convert it to a 7 character hex string and
// assign this value to the color picker
else if(this.value.match(/^#([0-9a-f]{3})$/)) {
var r = this.value[1],
g = this.value[2],
b = this.value[3];
colpick.value = `#${r}${r}${g}${g}${b}${b}`;
}
})
// If a new color is picked, display its value
// in the text input field
colpick.addEventListener("input", function(e){
coltext.value = this.value;
})
<input type=text id="coltext" />
<input type=color id="color" />
: - 대신 여섯 개 별도의 표현의 내 원래의 대답과 같이 그것은 문자열을 연결하고 하나의 템플릿 리터럴 표현식을 사용하여 결과를 인쇄 할 수 아마 더 빠릅니다. 두 가지 모두 작동하는 동안 다음 라인은 아마도 위의 해결책보다 더 우아하고 약간 성능이 뛰어납니다.
colpick.value = `#${r+r+g+g+b+b}`;
'changeColor'함수를 어떻게 호출합니까? –
올바른 코드 –
까지 사용자가 입력을 계속하면 어떻게 만들 수 있습니까? MDN의 설명서를 살펴보아야합니다. https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/color '색상 변경 추적하기'섹션이 도움이 될 것입니다. –