javascript - 当值为空时,我的输入不想将其自身着色为红色

标签 javascript html css

问题

我的问题如下...我有一个输入,在验证了正确的信息后,它本身变成了红色。一旦我输入一个字母,我使用属性 oninput 让它变回白色。不过在函数中,我还声明如果输入的值不是任何东西,它应该变回红色,但是这部分不起作用,这是为什么?

我的 HTML:

<input oninput="validateInput (this)">

我的CSS:

input {background-color: red}

我的 JavaScript:

function validateInput (a) {
    if (a.value == '') return;
    a.style.cssText = 'background-color: #fff';
}

请注意,这是我简化的代码,在输入和我的 css 中有更多的函数和属性,我认为没有必要放入!

最佳答案

您需要使用引人注目的颜色。在默认情况下具有白色背景的元素上设置白色背景不会这样做。

此外,您的 CSS 始终将文本颜色设置为红色,而不仅仅是在字段为空时。

此外(不是您问题的直接部分),不要使用内联 HTML 事件属性(onclickoninput 等)。有 many reasons 不要使用这种不会消失的旧技术。使用 JavaScript 中基于现代标准的代码执行所有事件绑定(bind)。

最后,向元素应用和删除类比设置单独的样式要简单得多,也更具可扩展性。这可以通过 .classList.add, .classList.remove and classList.toggle 轻松完成。 .

尝试这样的事情:

// Get your reference to the element you want to work with:
var input = document.querySelector(".validate");

// Set up the event handler(s). In this case, we want the field
// to undergo validation as the user enters data or if the user
// leaves the field
input.addEventListener("input", validateInput);
input.addEventListener("blur", validateInput);

function validateInput() {
    if (input.value === '') {
      input.classList.add("invalid");
      input.classList.remove("valid");      
    } else {
      input.classList.remove("invalid");
      input.classList.add("valid");      
    }
}
.invalid { 
   color: red;
   background-color:yellow;
}

.valid {
   color: blue;
   background-color:aliceblue;  
}
<p>Type in the box, then backspace out all the data or just click in the box without typing and hit TAB</p>
<input class="validate">

关于javascript - 当值为空时,我的输入不想将其自身着色为红色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47536443/

相关文章:

javascript - 如何在所见即所得编辑器中保持 html 属性不变?

javascript - 更简洁的不区分大小写的测验验证

html - CSS 动态调整 Div 大小以适应内容?

html - 滚动时如何让文本与背景图像保持固定?

javascript - 更改从商店加载选项的下拉 dojo 的字体大小

css - 请解释这个CSS

html - 为什么这个请求返回 200(来自缓存)而其他请求返回 304?

javascript - 在 JavaScript 中使用 JSON http 请求

php - 最佳实践 : include( or &lt;script src="

javascript - Vimeo javascript api player.play() 不播放