【发布时间】:2026-02-17 02:15:02
【问题描述】:
我正在尝试验证和调整用户输入的邮政编码以匹配以下格式:xxxxx 或 xxxxx-xxxx 如果用户输入超过 5 位数字,是否有使用 javascript 自动添加连字符 (-) 的简单方法?
【问题讨论】:
标签: javascript html validation input user-input
我正在尝试验证和调整用户输入的邮政编码以匹配以下格式:xxxxx 或 xxxxx-xxxx 如果用户输入超过 5 位数字,是否有使用 javascript 自动添加连字符 (-) 的简单方法?
【问题讨论】:
标签: javascript html validation input user-input
您可以尝试使用简单的javascript函数如下
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
<script>
function FN_HYPEN(){
var input = document.getElementById("USER");
if(input.value.length === 5) {
input.value += "-";
}
}
</script>
</head>
<body>
<INPUT ID="USER" TYPE="TEXT" onKeypress="FN_HYPEN();"/>
</body>
</html>
【讨论】:
试试下面的。
function add_hyphen() {
var input = document.getElementById("myinput");
var str = input.value;
str = str.replace("-","");
if (str.length > 5) {
str = str.substring(0,5) + "-" + str.substring(5);
}
input.value = str
}
<input type="text" id="myinput" value="a" OnInput="add_hyphen()"></input>
【讨论】:
安娜,
最好的方法是使用正则表达式。您需要的是:
^[0-9]{5}(?:-[0-9]{4})?$
你会使用十个类似的东西:
function IsValidZipCode(zip) {
var isValid = /^[0-9]{5}(?:-[0-9]{4})?$/.test(zip);
if (isValid)
alert('Valid ZipCode');
else {
alert('Invalid ZipCode');
}
}
在你的 HTML 中这样称呼它:
<input id="txtZip" name="zip" type="text" /><br />
<input id="Button1" type="submit" value="Validate"
onclick="IsValidZipCode(this.form.zip.value)" />
有关正则表达式的更多信息,这是一篇好文章:
【讨论】:
肯定有!只需检查输入的字符串有多少个字符,如果是 5 个,则在字符串中添加连字符 :)
var input = document.getElementById("ELEMENT-ID");
input.addEventListener("input", function() {
if(input.value.length === 5) {
input.value += "-";
}
}
【讨论】: