Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果存在';如果字段中没有单词,则返回错误,但仍提交cgi文件?_Javascript_Html_Css_Perl - Fatal编程技术网

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();
    }
}