【问题标题】:Why is returning false with onSubmit reloading?为什么在 onSubmit 重新加载时返回 false?
【发布时间】:2010-07-21 16:56:18
【问题描述】:

我知道这可能会盯着我看,但是:

我有一个带有 for 标头的基本 for:

<form onSubmit="return validateClinicalReports();" name="clinicalreport" method="post" action="process.php" enctype="multipart/form-data">

js 使用以下命令查看每个输入:document.getElementById("name")。如果它看到输入是空白的,它会将输入着色为黄色,选择它,并给出焦点。很简单,我在另一个有不同输入的表单上使用它:

if(name == "")
    {
        document.getElementById("name").style.backgroundColor = "yellow";
        document.getElementById("name").select();
        document.getElementById("name").focus();
        return false;
    }

我实际上是从另一个函数中复制了它(只是将变量和 id 更改为名称)。当我提交时,我可以看到它采用黄色的空白输入,然后重新加载整个表单。我的其他表单也可以正常使用。

有什么想法吗?

【问题讨论】:

  • 不要使用“name”作为变量或 id,因为 window.name 是一个实际变量。而是将其称为 FirstName 或类似

标签: javascript return validation reload


【解决方案1】:

事实证明,您不应该着急,在输入 id name :::headdeask::: 时使用预设关键字

【讨论】:

    【解决方案2】:

    onSubmit 处理程序在没有任何参数的情况下调用 validateClinicalReports()。您没有包含完整的函数,但是“名称”变量是什么,它来自哪里?

    我的猜测是“if (name == "")”代码根本没有被执行。您可以通过添加一个 alert() 调用作为 if 正文中的第一条语句来验证它是否被调用。您可能可以完全删除 if() 测试并始终执行代码。

    另外,如果你要使用 getElementById(),你应该在表单标签中添加“id=name”。

    【讨论】:

    • 在这种情况下 validateClinicalReports 不需要任何参数。我不需要向它传递任何东西,因为它会在 if 语句中提取变量值。 name 变量只是此问题中用作任何变量的占位符的示例。我使用“位置”作为变量。我将其更改为“loc”并且它起作用了。
    猜你喜欢
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多