我有图案验证一个<input>
元件。HTML模式匹配不工作
<input type="text" id="some" pattern="^[A-Z]{5}$" name="some" maxlength="5" style="text-transform:uppercase" required/>
如果用户输入全部大写字符,但是如果任何字符是小写字母,则模式匹配工作。为什么模式匹配不考虑style="text-transform:uppercase"
?
我有图案验证一个<input>
元件。HTML模式匹配不工作
<input type="text" id="some" pattern="^[A-Z]{5}$" name="some" maxlength="5" style="text-transform:uppercase" required/>
如果用户输入全部大写字符,但是如果任何字符是小写字母,则模式匹配工作。为什么模式匹配不考虑style="text-transform:uppercase"
?
的text-transform
仅为视觉变化,而不是一个数据变化。
请看下面的例子来调试<input>
:
function debug()
{
let inpItem = document.getElementById('some');
let inpValue = document.getElementById('some').value;
//alert the actual value on input.
console.log(inpValue);
//set text-transform to default.
inpItem.style='text-transform:none';
}
input {
text-transform:uppercase;
}
<button onclick="debug()">Debug</button>
<input type="text" id="some" pattern="^[A-Z]{5}$" name="some" maxlength="5" required/>
你怎么只能输入大写字母?
您可以使用JavaScript来的所有输入值设置为大写的值。
function debug()
{
let inpItem = document.getElementById('some');
let inpValue = document.getElementById('some').value;
//alert the actual value on input.
console.log(inpValue);
//set text-transform to default.
inpItem.style='text-transform:none';
}
<button onclick="debug()">Debug</button>
<input type="text" id="some" pattern="^[A-Z]{5}$" name="some" maxlength="5" onkeyup="javascript:this.value=this.value.toUpperCase();" required/>
我不知道为什么,这是happenning,也许图案之前的风格是考虑到输入文本处理,但我看你正试图创建一个模式来接受最多五个拉丁字符(大写或小写的,因为你是他们全部更改为大写),那么你为什么不只是添加小写字母的模式?
pattern="^[A-Za-z]{5}$"
模式忽略text-decoration: uppercase;
,因为它是唯一的造型和原始文本仍在格式化它输入的方式。
你应该改变你的图案来检查大写和小写符号。
^[A-Za-z]{5}$
你的正则表达式将只如果有5个连续的大写字母,您可以在这里http://regexr.com
检查,我想这是因为它适用变换前的模式。所以,你在做什么是毫无意义的。由于只能输入大写字母,因此不能将任何内容转换为大写字母。接受小写字母并转换它们,或只接受大写字母。 –