Javascript 如果存在';如果字段中没有单词,则返回错误,但仍提交cgi文件?
更具体地说,当我们提交应该包含信息的空表单时,应该提交一个警告,上面写着“请输入一个值”,但在警告中选择“确定”后,它仍然会在提交时发送电子邮件。我希望,如果有一个错误,他们必须满足表格的要求之前,提交的电子邮件可以发送。代码是: 这将检查字段中是否有任何值Javascript 如果存在';如果字段中没有单词,则返回错误,但仍提交cgi文件?,javascript,html,css,perl,Javascript,Html,Css,Perl,更具体地说,当我们提交应该包含信息的空表单时,应该提交一个警告,上面写着“请输入一个值”,但在警告中选择“确定”后,它仍然会在提交时发送电子邮件。我希望,如果有一个错误,他们必须满足表格的要求之前,提交的电子邮件可以发送。代码是: 这将检查字段中是否有任何值 function notEmpty(elem, helperMsg) { if (elem.value.length >= 2) { return true; alert(helperMsg);
function notEmpty(elem, helperMsg) {
if (elem.value.length >= 2) {
return true;
alert(helperMsg);
elem.focus();
return false;
}
return true;
}
表格的开头:
“提交”按钮:
欢迎对我们的问题有任何见解 您的第一个
返回真值
应该被删除:p您的第一个返回真值
应该被删除:p这将失败有几个原因
您将遇到的第一个问题是,由于在调用notEmpty
时没有传递任何参数,因此变量elem
将是未定义的。当您尝试访问其上的属性(值
)时,将引发异常,函数将停止
让我们从头开始
首先,我们将使用更现代的方法来应用事件处理程序
提供一种方法来识别要处理的表单。id属性是一个很好的常规选择(但使用一个比I更有意义的名称):
请注意,您必须在将表单添加到DOM后执行此操作。实现这一点的最简单方法是将您的
放在
之后(就在
之前是一个流行的位置)。您还可以使用事件处理程序,在DOM就绪或文档已加载时触发
旧版本的Internet Explorer不支持AddEventListener
,如果您想支持它们,请参阅
接下来,更新notEmpty
函数。因为它是一个事件处理程序,所以它将得到一个参数——一个事件对象。它还将在绑定到的元素(表单)的上下文中调用
您希望检查某个元素是否具有特定长度的值,但在您的问题中没有此类元素的迹象。让我们用这个例子:
<label> Some data <input name="example"></label>
现在,您可以添加您的测试:
function notEmpty(event) {
var aForm = this;
var input = aForm.elements.example;
if (input.length >= 2) {
} else {
}
}
如果不希望表单提交,请防止对事件执行默认操作:
function notEmpty(event) {
var aForm = this;
var input = aForm.elements.example;
if (input.length >= 2) {
// At least two characters, all is well
} else {
alert("An error");
input.focus();
event.preventDefault();
}
}
这将失败有几个原因
您将遇到的第一个问题是,由于在调用notEmpty
时没有传递任何参数,因此变量elem
将是未定义的。当您尝试访问其上的属性(值
)时,将引发异常,函数将停止
让我们从头开始
首先,我们将使用更现代的方法来应用事件处理程序
提供一种方法来识别要处理的表单。id属性是一个很好的常规选择(但使用一个比I更有意义的名称):
请注意,您必须在将表单添加到DOM后执行此操作。实现这一点的最简单方法是将您的
放在
之后(就在
之前是一个流行的位置)。您还可以使用事件处理程序,在DOM就绪或文档已加载时触发
旧版本的Internet Explorer不支持AddEventListener
,如果您想支持它们,请参阅
接下来,更新notEmpty
函数。因为它是一个事件处理程序,所以它将得到一个参数——一个事件对象。它还将在绑定到的元素(表单)的上下文中调用
您希望检查某个元素是否具有特定长度的值,但在您的问题中没有此类元素的迹象。让我们用这个例子:
<label> Some data <input name="example"></label>
现在,您可以添加您的测试:
function notEmpty(event) {
var aForm = this;
var input = aForm.elements.example;
if (input.length >= 2) {
} else {
}
}
如果不希望表单提交,请防止对事件执行默认操作:
function notEmpty(event) {
var aForm = this;
var input = aForm.elements.example;
if (input.length >= 2) {
// At least two characters, all is well
} else {
alert("An error");
input.focus();
event.preventDefault();
}
}
感谢您的回复,虽然您的代码比我的代码更整洁易读,但问题仍然没有解决,我自己实际上还没有硬编码网站,我只是在填写帮助,所以我认为html可能是问题所在。尽管如此,我们现在设法将其修复,非常感谢您的帮助:)谢谢您的回复,虽然您的代码比我的代码更整洁易读,但问题仍然没有解决,我自己实际上还没有硬编码网站,我只是在填写帮助,所以我认为html可能是问题所在。尽管如此,我们现在设法解决了它,非常感谢您的帮助:)
function notEmpty(event) {
var aForm = this;
var input = aForm.elements.example;
if (input.length >= 2) {
// At least two characters, all is well
} else {
alert("An error");
input.focus();
event.preventDefault();
}
}