查看CSS:invalid选择器当前是否在JavaScript中处于活动状态
See if CSS :invalid selector is currently active in JavaScript
我正在进行一个个人项目,并试图使用HTML5和JavaScript对表单进行一些错误验证。
我的HTML代码:
<body>
<header>
<h1>BPMeasure</h1>
</header>
<form onsubmit="return false" oninput="o.value = main();">
Track A: <input name="input_a" id="input_a" type="number" min="0.0" max="200.0" value="0"><br/>
Track B: <input name="input_b" id="input_b" type="number" min="0.0" max="200.0" value="0"><br/>
<br />
Output: <output name="o" for="a b"></output>
</form>
</body>
我的JavaScript代码:
function calculate(track_a, track_b) {
if(track_a > track_b) {
return ((track_a - track_b) / track_a) * 100;
} else if(track_a < track_b) {
return ((track_a - track_b) / track_b) * 100;
} else {
return 0.0;
}
}
function main() {
var track_a = input_a.valueAsNumber;
var track_b = input_b.valueAsNumber;
var message = isTrackValid(track_a, track_b);
if(message !== "") {
return message;
} else {
return calculate(track_a, track_b);
}
}
现在,isValid()
是一个占位符。我希望这样,当有人在track_a
或track_b
中输入无效数字时,他们会在输出中收到错误消息(return message
部分)。一个无效的数字特别是3+
、3++
、3.-4
、5..5
等。
为了弄清楚输入是否无效,我使用了以下css代码:
form input[type=number]:invalid {
background-color: #ff8878;
}
不幸的是,我不得不使用这个,因为如果有人输入了一个无效的数字(就像上面的例子一样),它总是会返回NaN
。这意味着,如果用户甚至没有键入任何内容,我们就有值NaN
,这意味着它会不断显示错误消息。这就是为什么我有上面的invalid
css代码。
我的问题是,JavaScript中是否有一种方法可以检测input
当前是否具有属性invalid
,如果是,我可以返回错误消息,直到他们修复错误或清除输入?
正如在这个问题的答案中所说,
inputElement.checkValidity()
返回true或false- CCD_ 15返回有效性状态对象。
inputElement.validity.valid
返回真/假
您可以使用inputs的checkValidaty()方法。所有现代浏览器和IE10+都支持它。
来自MDN:
如果元素是约束验证的候选元素,则返回false,并且它不满足其约束。在这种情况下,它也会着火元素处的无效事件。如果元素不是,则返回true约束验证的候选者,或者如果它满足约束。
function isValid(input_a, input_b) {
if(!input_a.checkValidity() || !input_b.checkValidity()) {
return 'error';
}
return '';
} //isValid
function calculate(track_a, track_b) {
if (track_a > track_b) {
return ((track_a - track_b) / track_a) * 100;
} else if (track_a < track_b) {
return ((track_a - track_b) / track_b) * 100;
} else {
return 0.0;
}
}
function main() {
var track_a = input_a.valueAsNumber;
var track_b = input_b.valueAsNumber;
var message = isValid(input_a, input_b);
if (message !== "") {
return message;
} else {
return calculate(track_a, track_b);
}
}
form input[type=number]:invalid {
background-color: #ff8878;
}
<form onsubmit="return false" oninput="o.value = main();">
Track A:
<input name="input_a" id="input_a" type="number" min="0.0" max="200.0" value="0">
<br/>Track B:
<input name="input_b" id="input_b" type="number" min="0.0" max="200.0" value="0">
<br/>
<br />Output:
<output name="o" for="a b"></output>
</form>
相关文章:
- 使用纯javascript而非jquery使所选选项卡处于活动状态并保持非活动状态
- 返回上一页时,Javascript仍处于活动状态
- 限制 .live() 函数在 JavaScript 中变为活动状态的次数
- javascript未处于活动状态
- Javascript/JQuery样式-#按钮:点击全屏后悬停保持活动状态
- Javascript:在表单中输入数据时,提交按钮不处于活动状态
- 查看CSS:invalid选择器当前是否在JavaScript中处于活动状态
- Javascript 仅在从特定目录查看时处于活动状态
- JavaScript 下拉菜单在单击时处于活动状态,在外部单击时不活动
- 仅在一个窗口中播放声音,该窗口使用javascript(可能是jquery)处于活动状态(在一个网站内)
- 活动状态菜单 JavaScript
- 在 JavaScript 函数中保持变量处于活动状态时出现问题
- 如何在多页HTML5应用程序中保持JavaScript对象的活动状态
- 使链接保持活动状态,使用 JavaScript 在单击时显示悬停效果
- 有没有办法找出Javascript中有多少个间隔处于活动状态
- “Enter”键在文本框处于活动状态时调用javascript函数
- javascript菜单悬停处于活动状态
- 了解开发者控制台在当前浏览器(JavaScript)中是否处于活动状态
- 由图像组成的按钮的Javascript活动状态
- Javascript活动状态用不同的颜色表示