jquery 颜色适用于文本而不是 div

标签 jquery html css

我正在尝试使用 jQuery 制作一个简单的颜色选择器:
JS:

$(function(){
 $("#color-input").keyup(function(){
  var colorCode = $(this).html();
  $(this).css('color', colorCode);
 });
});

HTML:

<input type="text" name="color-input" id="color-input">

它应该读取文本框的输入,并使文本成为输入的颜色。这行得通,但是当我尝试这样做时:

<input type="text" name="color-input" id="color-input">
<div id="color-box" style="height:250px; width:250px;"></div>

JS:

$(function(){
      $("#color-input").keyup(function(){
         var colorCode = $(this).html();
         $(this).css('color', colorCode);
         $("#color-box").css('background', colorCode);
      });
    });

它仅适用于某些颜色,例如 #FF00FFrgb(0,255,0)。对于像这样的代码:#7f154,文本会改变颜色,而不是 div。无论代码如何,我怎样才能使两者都匹配输入的颜色? LIVE PAGE

最佳答案

您需要更改“背景颜色”属性,而不是“背景”:

$(function(){
      $("#color-input").keyup(function(){
         var colorCode = $(this).val();
         $(this).css('color', colorCode);
         $(this).css('background', 'none');
         $("#readout").css('background-color', colorCode); //changed to background-color
         $("#readout-t").val(colorCode);
      });
    });

此外,如果用户输入值,您应该检查它是否以“#”开头:

$(function(){
      $("#color-input").keyup(function(){
         var colorCode = $(this).val();
         $(this).css('color', colorCode);
         $(this).css('background', 'none');
         //check if valid color
         if (colorCode.charAt(0) != '#') {
              colorCode = '#' + colorCode;
         }
         $("#readout").css('background-color', colorCode);
         $("#readout-t").val(colorCode);
      });
    });

关于jquery 颜色适用于文本而不是 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31482607/

相关文章:

javascript - 如何以编程方式在 php 中发送帖子数据?

html - anchor 标签比它持有的元素大

html - 如何使用@media 使图像适合屏幕?

html - 如何将 HTML 表格放在行内 block 中,以便它们保持在一行中,而我只需要水平滚动?

带有相关链接的 jQuery 内容 slider

javascript - 在输入(数字)的按键上添加/删除输入(文本)

html - HTML 模式中有没有办法确认电子邮件地址

css - 将 3 列布局转换为始终位于顶部的一列

html - 使用 css 防止 html 表格的表格行增长(即保持固定的行高)

php - WordPress 元标记挑战