Javascript 为什么表单值不显示?
我正在创建一个简单的表单,我想在表单提交并成功验证后将输入值写入控制台。然而,当我去测试我当前的进度时,我输入了一段随机的文本,但没有显示任何内容,即使在控制台中也是如此。以下是我现在使用的代码,不包括任何注释掉的代码: window.onload=函数{//,因此可以定义DOM 函数validateForm{ var form=document.forms['encrypt']['text']; 不规则=={ 输入一段要加密的文本; 返回false; }否则{ console.logform.value; } } } 正文:Javascript 为什么表单值不显示?,javascript,html,forms,Javascript,Html,Forms,我正在创建一个简单的表单,我想在表单提交并成功验证后将输入值写入控制台。然而,当我去测试我当前的进度时,我输入了一段随机的文本,但没有显示任何内容,即使在控制台中也是如此。以下是我现在使用的代码,不包括任何注释掉的代码: window.onload=函数{//,因此可以定义DOM 函数validateForm{ var form=document.forms['encrypt']['text']; 不规则=={ 输入一段要加密的文本; 返回false; }否则{ console.logform
validateForm函数仅在onload函数中可见。此外,您将表单与空字符串进行比较,而不是将表单中文本字段中的值进行比较。console.log也不可见,因为页面会在您看到它之前刷新 下面是修复了这三件事的代码
<html>
<head>
<meta charset="utf-8" />
<script>
function validateForm() {
var text = document.forms['encrypt']['text'].value;
if(text == "") {
alert("Enter piece of text to encrypt");
return false;
} else {
alert("Entered '" + text + "', refreshing now.");
return true;
}
}
</script>
</head>
<body>
<form name="encrypt" action="#" onsubmit="return validateForm()">
Text: <input type="text" name="text">
<input type="submit" name="Submit and Encrypt!">
</form>
</body>
</html>
validateForm函数仅在onload函数中可见。此外,您将表单与空字符串进行比较,而不是将表单中文本字段中的值进行比较。console.log也不可见,因为页面会在您看到它之前刷新 下面是修复了这三件事的代码
<html>
<head>
<meta charset="utf-8" />
<script>
function validateForm() {
var text = document.forms['encrypt']['text'].value;
if(text == "") {
alert("Enter piece of text to encrypt");
return false;
} else {
alert("Entered '" + text + "', refreshing now.");
return true;
}
}
</script>
</head>
<body>
<form name="encrypt" action="#" onsubmit="return validateForm()">
Text: <input type="text" name="text">
<input type="submit" name="Submit and Encrypt!">
</form>
</body>
</html>
没有理由将此函数包装在onload事件处理程序中。这样做限制了函数定义的范围,使得试图调用它的代码实际上看不到它。也就是说,onload完成后,您定义的函数不再在作用域中,不再存在 只需删除处理程序并直接定义函数:
<script language="Javascript">
function validateForm() {
var form = document.forms['encrypt']['text'];
if(form == "") {
alert("Enter piece of text to encrypt");
return false;
} else {
console.log(form.value);
}
}
</script>
没有理由将此函数包装在onload事件处理程序中。这样做限制了函数定义的范围,使得试图调用它的代码实际上看不到它。也就是说,onload完成后,您定义的函数不再在作用域中,不再存在 只需删除处理程序并直接定义函数:
<script language="Javascript">
function validateForm() {
var form = document.forms['encrypt']['text'];
if(form == "") {
alert("Enter piece of text to encrypt");
return false;
} else {
console.log(form.value);
}
}
</script>
请尝试删除window.onload=function{并保留validateForm函数。请尝试删除window.onload=function{并保留validateForm函数。问题是,当您单击提交时,无法在作用域中访问函数validateForm。您可以通过在控制台中调用此函数来验证这一点。
在您的代码中,它是在window.onload中定义的,因此请将函数移出它。问题是,当您单击submit时,无法在作用域中访问函数validateForm。您可以通过在控制台中调用此函数来验证这一点。
在您的代码中,它是在window.onload中定义的,因此请将该函数移出它。这不会将document.forms设置为null吗?对不起,您的意思是哪一行?您删除了window.onload处理程序,在其中,我用document.forms引用了表单。这是validateForm声明中的第一行。我很高兴,高-五:-现在我可以加密提交的文本并显示它!这不是将document.forms设置为null吗?对不起,你的意思是哪一行?你删除了window.onload处理程序,在其中,我用document.forms引用表单。这是validateForm声明中的第一行。我很高兴,high五:-现在我可以加密提交的文本了我想这会将document.forms设置为null。让我试试。@Obinnawakwue:这个函数没有将document.forms设置为任何值,它只是从中读取。我想这会将document.forms设置为null。让我试试。@Obinnawakwue:这个函数没有将document.forms设置为任何值,它只是从中读取。