在javascript中设置时捕获HTML5错误输入验证(显示警告)或在设置之前检查验证

在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(“输入”).

我正在尝试验证要在输入中设置的数据。我想使用de验证HTML5

例如,我想检查“aaaa”是否是数字输入的有效数据。我想使用
将验证
有效性
,但我无法设置无效值,控制台显示(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; 警报(输入.计算名称); } }
这不是答案。输入类型编号就是一个例子,我需要验证任何输入类型。如果输入是日期,则问题