扩展HTML5/JavaScript输入验证API

扩展HTML5/JavaScript输入验证API,javascript,html,api,validation,input,Javascript,Html,Api,Validation,Input,我将在一个输入类型编号字段上使用HTML5验证,该字段使用min和step属性以及初始值,即 <input type="number" min="50" step="50" value="100" /> 但是,我希望验证允许用户输入大于最小值的值,但在步骤之间,此处以粗体显示: 50,51。。。99、100、101。。。149、150、151… 我是否可以在验证API执行其工作后以某种方式“钩住”它,并且如果它发现的唯一错误是步骤错误,则重置有效条件,以便可以提交该字段所在的表

我将在一个输入类型编号字段上使用HTML5验证,该字段使用min和step属性以及初始值,即

<input type="number" min="50" step="50" value="100" />

但是,我希望验证允许用户输入大于最小值的值,但在步骤之间,此处以粗体显示:

50,51。。。99、100、101。。。149、150、151…

我是否可以在验证API执行其工作后以某种方式“钩住”它,并且如果它发现的唯一错误是步骤错误,则重置有效条件,以便可以提交该字段所在的表单


如果除了消息字符串参数外,
元素.setCustomValidity()
函数还可以接受一个回调函数,如果元素的值通过了检查,该函数将返回一个空字符串,那当然很好如果值未通过,则返回非空消息字符串。

您可以使用文本输入,并使用使用正则表达式(RegExp)验证其值的模式属性,如下所示:

<form>
    <input type="text" pattern="(^[6-9][0-9]{1,}$|^[5][1-9]$)|(^((?!00|50|[a-zA-Z]).){3,}$)" title="Invalid values" required>
</form>

编辑1:由于您不想更改输入类型,这可能是解决方案(使用相同的正则表达式):


window.validate50=功能(ev){
var tar=ev.target | | ev;
//测试值不是50的倍数
如果(!/(^[6-9][0-9]{1,}$| ^[5][1-9]$){3,}$)/img.test(焦油值)){
//在本例中,使用“html标题上的文本”属性触发验证
tar.setCustomValidity(tar.title);
//返回false,因此禁止“提交”操作
返回false;
}
};

您可以使用文本输入,并使用使用正则表达式(RegExp)验证其值的模式属性,如下所示:

<form>
    <input type="text" pattern="(^[6-9][0-9]{1,}$|^[5][1-9]$)|(^((?!00|50|[a-zA-Z]).){3,}$)" title="Invalid values" required>
</form>

编辑1:由于您不想更改输入类型,这可能是解决方案(使用相同的正则表达式):


window.validate50=功能(ev){
var tar=ev.target | | ev;
//测试值不是50的倍数
如果(!/(^[6-9][0-9]{1,}$| ^[5][1-9]$){3,}$)/img.test(焦油值)){
//在本例中,使用“html标题上的文本”属性触发验证
tar.setCustomValidity(tar.title);
//返回false,因此禁止“提交”操作
返回false;
}
};

我在问是否有办法在输入数字元素上增加验证函数,而你却告诉我使用另一个元素——这不是我要问的。我对你的建议没有异议,但你的批评(-1=糟糕的问题!)既不受欢迎也没有道理。没有解释你为什么否决一个问题,我只能猜测你为什么这么做。我是不是浪费了你的时间,因为我发布了一个愚蠢的问题而侮辱了你,还是什么?我在问是否有办法在输入数字元素上增加验证函数,而你却告诉我使用另一个元素——不是我要问的。我对你的建议没有异议,但你的批评(-1=糟糕的问题!)既不受欢迎也没有道理。没有解释你为什么否决一个问题,我只能猜测你为什么这么做。我是不是浪费了你的时间,因为我贴了一个愚蠢的问题而侮辱你,还是什么?