javascript - 如何根据输入的值更改输入的背景颜色

标签 javascript jquery html input

我正在尝试根据输入的值更改输入字段的背景颜色。我有一些 JS 详细说明了一些大于/小于条件。

问题 - 它仅在第一个单元格中起作用,而在其余单元格中不起作用。如何让脚本传递其他输入值?

HTML 片段:

<div class="row">
    <div class="col-lg-3 text-center">
        <label for="k-cls" class="text-strong">CLS</label>
        <input class="form-control" type="text" id="k-cls" placeholder="#" onchange="checkFilled();">
    </div>
</div>

这是 JS 片段:

function checkFilled() {
    var inputVal = document.getElementById("k-cls");
    if (inputVal.value >= 6 && inputVal.value <= 9) {
        inputVal.style.backgroundColor = "yellow";
    }
    else{
        inputVal.style.backgroundColor = "";
    }
}        
checkFilled();

这是当前工作 Codepen

最佳答案

首先,一个页面上不能有多个具有相同 ID 的元素 - 所以您应该确保解决这个问题。类可以重用。详细了解 ID 和类别之间的差异 at CSS-Tricks .

其次,这可以在不考虑元素的 ID/类/等的情况下完成。只需将 onchange 事件的引用传递给您的函数,如下所示。

(我还将 onchange 替换为 onkeyup,这样您就可以看到该函数立即运行。)

编辑:根据下面评论中的讨论,此演示中已添加其他功能。

function checkFilled(event) {
  var inputVal = event.target;
  var inputData = JSON.parse(inputVal.dataset.ranges);
  var color = "";

  for (i = 0; i < inputData.length; i++) {
    if (inputVal.value >= inputData[i][0] && inputVal.value <= inputData[i][1]) {
      color = inputData[i][2];
      break;
    }
  }

  inputVal.style.backgroundColor = color;
}
<input 
  placeholder="#"
  data-ranges='[[1, 3, "yellow"], [4, 6, "blue"], [7, 9, "red"]]'
  onkeyup="checkFilled(event);">

关于javascript - 如何根据输入的值更改输入的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50913789/

相关文章:

javascript - 重新加载 Facebook 评论会导致跨源错误

javascript - 在 div 中使用 onchange

javascript - 如何检查 iframe 是否为空/空/未定义?

javascript - jQuery 动态从 JSON 文件获取数据

javascript - 将 ('change' ) 的事件监听器添加到 Google map 信息窗口

javascript - 确定页面在 github 页面上已过时

javascript - 使用 angularjs 获取 html 之外的数据

jquery - 如何在PC屏幕上显示8个视频,在手机屏幕上显示4个视频

php - 在 Accordion 类中重复 div

html - 如何限制用户在 react 类组件的文本输入字段中输入数字或特殊字符