JavaScript 如果文本输入不符合参数,则阻止文本输入
JavaScript Prevent text entry if it does not meet parameters
在使用JavaScript函数时,如果字符不满足某些参数,我希望防止字符被输入到表单中。我使用的原始 JavaScript 代码是:
function validateLetter() {
var textInput = document.getElementById("letter").value;
var replacedInput = textInput.replace(/[^A-Za-z]/g, "");
if(textInput != replacedInput)
alert("You can only enter letters into this field.");
document.getElementById("letter").value = replacedInput;
}
当我在表单中仅使用 1 个输入点时,该函数有效,但是当我尝试在多个输入上使用该函数时,它只会影响表单中的第一个输入点。
在创建可由多个输入框重用的函数时,我得到了以下代码:
function validateLetter(dataEntry){
try {
var textInput = dataEntry.value;
var replacedInput = textInput.replace(/[^A-Za-z]/g);
if (textInput != replacedInput)
throw "You can only enter letters into this field.";
}
catch(InputError) {
window.alert(InputError)
return false;
}
return true;
}
我用来输入信息的表格是:
<form action="validateTheCharacters" enctype="application/x-www-form-urlencoded">
<p>Enter your mother's maiden name:
<input type="text" id="letter" name="letter" onkeypress="validateLetter();" />
</p>
<p>Enter the city you were born in:
<input type="text" id="letter" name="letter" onkeypress="validateLetter();" />
</p>
<p>Enter the street you grew up on:
<input type="text" id="letter" name="letter" onkeypress="validateLetter()">
</p>
</form>
有谁知道翻译第一个函数最后一行的方法:document.getElementById("letter").value = replacementInput;
可以与当前代码重用的内容。
我试过了:dataEntry.value = replacementInput但这似乎根本没有运行/更改功能
问题出在textInput.replace()
- 您忘记了第二个参数。所以你需要的不是textInput.replace(/[^A-Za-z]/g);
,而是textInput.replace(/[^A-Za-z]/g, "");
.
正如MDN网站所指出的:
该 ID 在文档中必须是唯一的,并且通常用于使用 getElementById 检索元素。
在上面的示例中,您在所有输入字段上对 ID 属性使用相同的值。此外,name 属性在表单中应该是唯一的。这里提供的答案更深入地解释了。话虽如此,在下面的示例中,我已经修改了有关上述内容的输入字段。
首先,您提供的初始功能非常接近。它的一个问题是 replace() 方法需要第二个参数。此参数可以是要为每个匹配项调用的字符串或函数。在您的情况下,我相信您只需要一个空字符串:
function validateLetter() {
var textInput = document.getElementById("letter").value;
var replacedInput = textInput.replace(/[^A-Za-z]/g, "");
if(textInput != replacedInput)
alert("You can only enter letters into this field.");
document.getElementById("letter").value = replacedInput;
}
其次,您可以使用关键字 this
引用正在调用 validateLetter() 的当前输入字段作为参数传递给函数。
onkeypress="validateLetter(this);"
附带说明:使用 onkeyup
而不是 onkeypress
可能会获得更好的用户体验。下面的示例改用此事件,以便您可以自己进行比较和判断。
以下是所有内容放在一个工作示例中:
function validateLetter(target) {
var textInput = target.value;
var replacedInput = textInput.replace(/[^A-Za-z]/g, "");
if(textInput != replacedInput)
alert("You can only enter letters into this field.");
target.value = replacedInput;
}
<form action="validateTheCharacters" enctype="application/x-www-form-urlencoded">
<p>Enter your mother's maiden name:
<input type="text" id="maiden" name="maiden" onkeyup="validateLetter(this);" />
</p>
<p>Enter the city you were born in:
<input type="text" id="city" name="city" onkeyup="validateLetter(this);" />
</p>
<p>Enter the street you grew up on:
<input type="text" id="street" name="street" onkeyup="validateLetter(this)">
</p>
</form>
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- 使用模拟按键在输入框中自动输入文本
- 如何添加类,同时开始在文本字段中输入文本
- JQuery使用相同的功能自动完成各种输入文本
- 如何设置输入文本框jquery的值
- 输入文本框为空时的阻止按钮asp.网络表单
- 基于单选框更新页眉,选中并选择输入文本
- 将输入文本与某个选项的值相匹配并自动选择
- 如何在 JavaScript 中创建输入文本框
- 如何使用纯Javascript观看输入文本框
- 需要使用javascript获取输入文本,然后将其添加到句子中
- php&js-将电子邮件添加到输入文本中
- 动态启用/禁用来自控制器的输入文本
- .val()不返回输入文本
- 从确认框中预填充输入文本框
- 如何使用JavaScript解析输入文本中给定的数据
- 添加/删除/更改输入文本的部分值
- 根据输入文本按元素排序,AngularJS
- 如何将(a*b)两个输入文本值相乘,并在javascript中随文本变化动态显示
- 如何从Tr重复的输入文本中获取值