在javascript中设置时捕获HTML5错误输入验证(显示警告)或在设置之前检查验证
我正在尝试验证要在输入中设置的数据。我想使用de验证HTML5 例如,我想检查“aaaa”是否是数字输入的有效数据。我想使用在javascript中设置时捕获HTML5错误输入验证(显示警告)或在设置之前检查验证,javascript,html,html5-validation,Javascript,Html,Html5 Validation,我正在尝试验证要在输入中设置的数据。我想使用de验证HTML5 例如,我想检查“aaaa”是否是数字输入的有效数据。我想使用将验证或有效性,但我无法设置无效值,控制台显示(Chrome): 指定的值“aaaa”不是有效的数字。该值必须与以下正则表达式匹配:-?(\d++\d+。\d++.\d+)([eE][-+]?\d+) 我已尝试捕获错误,但它不是异常。我检索输入值,错误发生后输入值为空 var value=“aaaa”; 试一试{ document.getElementById(“输入”).
将验证
或有效性
,但我无法设置无效值,控制台显示(Chrome):
指定的值“aaaa”不是有效的数字。该值必须与以下正则表达式匹配:-?(\d++\d+。\d++.\d+)([eE][-+]?\d+)
我已尝试捕获错误,但它不是异常。我检索输入值,错误发生后输入值为空
var value=“aaaa”;
试一试{
document.getElementById(“输入”).value=value;//显示警告
}捕捉(错误){
console.log(err.message);//无法捕获任何内容
}
console.log(document.getElementById(“input”).value);//它是空的
更多说明:
我想检查要设置的值在输入类型中是否有效。我以为在输入中设置无效值并检查将验证或有效性,但浏览器显示警告,输入值为空。问题是,我的前端通过javascript设置输入值,但用户传递这些值。当发生错误时,我需要向用户显示错误,而不是只放,输入为空 已更新:
我知道警告也不例外。我想知道在任何类型中设置无效输入值时都会显示错误。这是因为这不是错误,只是警告。您可以在控制台中进行检查 (编辑:您在问题中自己也提到过) 您可以做的是检查isNaN(值)并抛出一个错误对象
try {
if(isNaN(value))
throw new Error("not a number");
else
document.getElementById("input").value = value;
} catch(err) {
document.getElementById("error").innerText = err.message;
}
例如
var value = "aaaa";
document.getElementById("input").value = value;
if (document.getElementById("input").value == null || document.getElementById("input").value == "") {
alert("Invalid value");
}
函数chkValidity(elemementID){
var inpObj=document.getElementById(elemementID);
if(inObj.checkValidity()==false){
InObjj.setCustomValidity(“这不是一个数字或有效数字。这是我通过javascript插入的值“+InObj.value+”的自定义有效性消息。确定\“必需\”、“最小值\”、“最大值\”和checkValidity它足以完成工作。”);
document.getElementById(“error”).innerHTML=inpObj.validationMessage;
警报(inObj.validationMessage);
}否则{
document.getElementById(“error”).innerHTML=“这是有效数字,在范围内”;
}
}
var value=“aaaa”;
document.getElementById(“输入”).value=value;
chkValidity(“输入”);
document.querySelector(“clickme”).addEventListener(“click”,function()){
chkValidity(“输入”);
});代码>
点击我
要检查javascript
设置的值
,您可以抛出错误
,在控制台上显示消息
设置为警告,如果输入
,则捕获
。值
与控制台
上显示的相同的RegExp
不匹配
要检查用户输入,yupu可以使用onkeydown
,onpaste
事件;使用
元素在html
处显示消息,onfocus
事件将标签设置为空字符串,如果输入。值为空字符串
注意,控制台
上显示的消息也设置为输入
元素
计算名称
属性;虽然未在用户输入时更新,但在catch
处的alert()
之后设置为空字符串
window.onload=函数(){
var输入=document.getElementById(“输入”);
var label=document.querySelector(“[for=input]”);
函数handleInvalid(el、val、e){
log(“值:”,val,“computedName:”,el.comptedName);
var message=“指定值”+val
+“不是有效的数字。”
+“该值必须与匹配”
+“以下正则表达式:”
+“”
+“-?(\d++\d++.\d++.\d+([eE][-+]?\d+)”
”;
//如果未定义“e”:“event”,
//那就是“val”:“aaaa”设置为“try”;
//非用户输入
如果(!e){
el.value=val;
};
如果(!/-?(\d+\d+\.\d+\.\d+)([eE][-+]?\d+?/.test(val)){
如果(!e){
//'throw`` Error`到'catch`
抛出新错误(消息);
}否则{
label.innerHTML=消息;
}
}否则{
//如果'val'与'RegExp'匹配,
//将'label`.innerHTML`设置为空字符串
label.innerHTML=“”
}
}
函数handleInput(e){
label.innerHTML=“”;
var text=e.clipboardData//处理“粘贴”事件
?e.clipboardData.getData(“文本/普通”)
//使用'keydown'事件的'event.key'
//如果已定义,则使用'e.keyCode'`
:e.key | | String.fromCodePoint(e.keyCode);
handleInvalid(本,文本,e);
}
函数重置(){
//将'label`.innerHTML`设置为空字符串
if(input.value.trim()=“”){
label.innerHTML=“”;
}
}
input.onkeydown=input.onpaste=handleInput;
input.onfocus=重置;
试一试{
var val=“aaaa”;
handleInvalid(输入,val)
}捕获(e){
label.innerHTML=e.message;
警报(输入.计算名称);
}
}
这不是答案。输入类型编号就是一个例子,我需要验证任何输入类型。如果输入是日期,则问题