表单提交空值。我该如何防止这种情况?

时间:2016-08-20 01:56:27

标签: javascript forms input

我的网站形式一直存在问题。该表单应该更新我网站的一些变量,因此它们会更改为新的输入,而不是仅仅向数据库添加更多。

问题是,即使某些输入区域为空,我希望表单能够通过,但我不希望将空值放在以前的值的位置。

例如,我有一个按钮名称“apendix”。我只想编辑那个,所以我只输入相应的输入区域,因此我只更新那个。但是一旦我点击提交,所有输入区域都会被提交,而空白区域则代替它们以前的变量。我不想要这个。我只想要有值的表单!=''或null来更新。

这是我的代码:

<script>
function validate(){
    var formId = document.getElementById("configForm");
    var allInputs = formId.getElementsByTagName("input");
    var input, i;

    for (i=0; input = allInputs[i]; i++){
        if (input.value == null || input.value == ""){
            input.setAttribute("name", "");
        }
    }
} </script>

<form method="post" action="" id="configForm" onsubmit="validate()">
<label for="home">Home:</label>
<br>
<input type="text"  id="home" name="home">
<br>
<label for="apendix">Apêndice:</label>
<br>
<input type="text" name="apendix">
<br>
<label for="about">Sobre:</label>
<br>
<input type="text" name="sobre">
<br>
<label for="contato">Contato:</label>
<br>
<input type="text" name="contato">
<br><br>
<input type="submit" value="Carregar" name="submit"> </form>

重要提示:我不希望任何输入区域是强制性的。感谢您提前的时间。

(另外我还没有得到jQuery,所以最好在javaScript中保留任何响应,如果可行的话,如果可能的话。谢谢。)

更新

以下是MY CGI中的输出:

home Test1

apendix Test2

sobre Test3-next_is_blank

contato

提交

Carregar

Here is a print, if it makes things clearer.可以看出,正在发布空值。我不想要这个,就是全部。做什么?此外,由于某种原因,屏幕提交后会提醒“未定义”。

更新2

我的网站SELECTS来自我的MySQL数据库。数据库中的值相应地更新为表单中获取的$ _POST值。为了解决这个问题,我相信,如果表单中的输入值保持为空,但我不知道如何更新,那么所有需要的是$ _POST不被更新。

    $home = $_POST["home"];
    $apendix = $_POST["apendix"];
    $sobre = $_POST["sobre"];
    $contato = $_POST ["contato"];

    $query = "UPDATE form SET 
    home= '$home',
    apendix= '$apendix',
    sobre= '$sobre',
    contato= '$contato'
    WHERE id='1'";

这是我的(简化)数据库查询。如果留空,如何防止$ _POST更新?

3 个答案:

答案 0 :(得分:0)

您是否使用了像Fiddler(Web调试代理)这样的工具来查看值实际上是否已被POST?请参阅https://jsfiddle.net/mmwn1L5g/如何仅选择所选的值?您确定您的服务器端代码是否正确并且没有清除其他值?

尝试发布以下操作以查看您的POST值并将其发布给我们。

<meta>

答案 1 :(得分:0)

//对不起。   //也许这对你有好处

<!DOCTYPE html>
<html>
<body>

<script>
function validate(){
var formId = document.getElementById("configForm");
var allInputs = formId.getElementsByTagName("input");
var input, i;

for (i=0; input = allInputs[i]; i++){
    if (input.value == null || input.value == ""){
        //Disable tag null or ""
        input.disabled = true;
    }
}
} </script>

<form name="yourForm" id="configForm" action="" onsubmit="validate()"     method="post">
<label for="home">Home:</label>
<br>
<input type="text"  id="home" name="home">
<br>
<label for="apendix">Apêndice:</label>
<br>
<input type="text" name="apendix">
<br>
<label for="about">Sobre:</label>
<br>
<input type="text" name="sobre">
<br>
<label for="contato">Contato:</label>
<br>
<input type="text" name="contato">
<br><br>
<input type="submit" value="Carregar" name="submit"> </form>

</body>
</html>

答案 2 :(得分:-1)

这并不困难。您可以在HTML5中将“必需”归因于

library(tidyr)

read.table(text="fruits     A      B     C
apple      9.8    21    62.2
bananas    12     11    58.3
pineapple  3.5    13    41.2
kiwi       6.4    36.5  38.1
strawberry 2.5    47.2  35.5", header=TRUE, stringsAsFactors=FALSE) -> df

gather(df, who, how_much, -fruits) 
祝你好运。