Javascript 如何使输入成为必需的
我想要的是,当两个字段,即Javascript 如何使输入成为必需的,javascript,html,Javascript,Html,我想要的是,当两个字段,即fname和lname保持为空时,弹出窗口应显示两条消息,即“必须填写名字”,“必须填写姓氏” 我需要做哪些修改 <!DOCTYPE html> <html> <head> <script> function validateForm() { var x = document.forms["myForm"]["fname"].value; if (x
fname
和lname
保持为空时,弹出窗口应显示两条消息,即“必须填写名字”,“必须填写姓氏”
我需要做哪些修改
<!DOCTYPE html>
<html>
<head>
<script>
function validateForm() {
var x = document.forms["myForm"]["fname"].value;
if (x == null || x == "") {
alert("First name must be filled out");
document.myForm.fname.focus();
return false;
}
var y = document.forms["myForm"]["lname"].value;
if (y == null || y == "") {
alert("Last name must be filled out");
document.myForm.lname.focus();
return false;
}
}
</script>
</head>
<body>
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post">First name:
<input type="text" name="fname">Last name:
<input type="text" name="lname">
<input type="submit" value="Submit">
</form>
</body>
函数validateForm(){
var x=document.forms[“myForm”][“fname”].value;
如果(x==null | | x==“”){
警告(“必须填写姓名”);
document.myForm.fname.focus();
返回false;
}
var y=document.forms[“myForm”][“lname”].value;
如果(y==null | | y==“”){
警告(“必须填写姓氏”);
document.myForm.lname.focus();
返回false;
}
}
名字:
姓氏:
也许这会给你一些关于如何继续的想法:
function validateForm() {
var errors = [],
fname = document.forms["myForm"]["fname"],
lname = document.forms["myForm"]["lname"];
if (lname.value == "") {
errors.unshift("Last name must be filled out");
lname.focus();
}
if (fname.value == "") {
errors.unshift("First name must be filled out");
fname.focus();
}
if (errors.length > 0) {
alert("Cannot submit\n" + errors.join("\n"));
return false;
}
}
演示:
您会注意到的第一件事是,它更容易阅读,因为块是缩进的。此外:
- 您当前使用
和document.forms[“myForm”][“fname”]
访问同一字段。选择一种方法并始终如一地使用,或document.myForm.fname
- 创建一个引用字段
的变量,然后使用fname
和fname.value
fname.focus()
- 不要费心测试
,因为null
属性永远不会被删除.value
- 不要立即发出错误警报并返回,而是将错误文本添加到数组中,然后在测试结束时如果数组为空
if (!x || x.length == 0)
您可以使用Hthml 5
required
。它是如此简单和整洁
<form>
First name: <input type="text" name="fname" required="required">
Last name: <input type="text" name="lname" required="required">
<input type="submit" value="Submit">
</form>
名字:
姓氏:
注意:Internet Explorer 10、Firefox、Opera和Chrome都支持
required
属性。但Internet Explorer 9和早期版本或Safari中不支持此功能。根据validateForm函数,您的代码永远不会检查第二个字段。使用return语句时,函数将停止执行,并返回指定的值。
解决方案是使用嵌套的if语句并检查一个条件块中的两个字段
if (x==null || x=="")
{
if (y==null || y=="")
{
//codes for both are not validated
}
else
{
//codes for just x is not validated
}
}
else
if (y==null || y=="")
{
//codes for y is not validated
}
else
{
//codes for all validated
}
这样,在每个块中使用return语句不会中断函数执行请搜索“验证输入是否为空”,有数百个结果。如果您在Chrome中使用Firefox,打开控制台确实很有帮助。控制台应该告诉您发生了什么错误,以便您知道必须修复什么。您还可以直接在控制台中键入javascript来测试内容,而无需创建一个全新的文件。记住,客户端从来都不需要它。确保在服务器端验证同样多(如果不是更多的话)。另一个选项是使用jQuery和验证插件。既然OP的代码
x
是一个字符串,为什么要测试!x
以及x.length
?此外,问题是如何更改代码以显示有关这两个字段的单个错误消息。请重新阅读-不是单个错误,而是两个错误!x表示不为null且未定义等。长度>0表示x不为空。抱歉,长度==0表示为空。x是字符串(因为.value属性返回的是字符串),因此永远不会为null或未定义!如果x是空字符串,则x将为真,因此长度检查是多余的。而且(再次)OP希望将x和y验证组合在一起,以便生成一条消息。你赢了,祝贺你!这是一个很好的整洁的方式,但它。(尽管考虑到OP也需要服务器端验证,但如果客户端验证不适用于旧IE,这可能并不重要。)@nnnnnn我正要更新我的答案:)…我知道这是有限的,但现在是我们应该开始使用html5属性的时候了,尽管我同意你的观点,它不兼容所有的浏览器。对于初学者来说清晰易懂+1.