【问题标题】:Keeping Default Values as Hidden Fields in a Text Box将默认值保留为文本框中的隐藏字段
【发布时间】:2014-07-29 15:40:46
【问题描述】:

我在传递隐藏字段时遇到了一些问题,而且我大多遇到未定义索引错误。

我正在尝试使用原始默认文本框值“如果更改并提交”,新的默认值将作为新值传递回文本框,并在此提交后保留。

例如,假设这四个文本框中的每一个中的默认值都是其上方标题的名称(文本框 1、文本框 2 等)。如果我希望将这些默认值中的任何一个更改为其他写入的内容,我必须做些什么不同的事情? (例如文本框 A、文本框 B 等)?

重置按钮需要能够将任何新值更改为原始默认值。除非另有建议,否则我可能会计划使用 Javascript 来执行此操作,因为我已经希望重置按钮也能删除显示信息的 div。

有什么想法吗?

<script type="text/javascript">
function customReset(){
    var div = document.getElementById("answers");
    div.parentNode.removeChild(div);
}
</script>

<h3 style="margin-bottom:2px;">Enter Current Variables:</h3>

<form class="variables" method="post" action="calc.php">

    <h4>Text Box 1:</h4>
    <input class="box" type="text" name="text1" value="<?php print $text1;?>" required>

    <h4>Text Box 2:</h4>
    <input class="box" type="text" name="text2" value="<?php print $text2;?>" required><br>    

    <h4>Text Box 3:</h4>
    <input class="box" type="text" name="text3" value="<?php print $text3;?>" required><br>    

    <h4>Text Box 4:</h4>
    <input class="box" type="text" name="text4" value="<?php print $text4;?>" required><br>   

    <input type="hidden" name="text1_default" value="text1_default" />
    <input type="hidden" name="text4_default" value="text4_default" />
    <input type="hidden" name="text3_default" value="text3_default" />
    <input type="hidden" name="text4_default" value="text4_default" />

    <br><input type="submit" name="button" value="Calculate"><input type="button" value="Reset" onClick="customReset()">

<?php 
$array_check = array('text1', 'text2', 'text3', 'text4');
foreach($array_check AS $key => $value) {
    if(!isset($_POST[$value])) {
        $_POST[$value] = $_POST[$value."_default"];
    }    
}
?>

</form>

【问题讨论】:

  • 我不是 php 专家,但是如何将表单设为局部视图并在重置按钮上单击重新加载该表单-partialView?
  • 你想达到什么目的?您有一个字段的预定义值,如果用户发送空白字段,您想发送预定义值?是那个吗?但是您的字段已经具有如下值:&lt;?php print $text1;?&gt;

标签: javascript php jquery parameter-passing


【解决方案1】:

你的 foreach 没用,在第一次运行时,$_POST 没有任何隐藏字段可用。

它将在提交后设置,然后在您的文件 calc.php 中设置。 如果 calc.php 与上面显示的相同,则 $_POST[] 已设置并且永远不会运行

if(!isset($_POST[$value]))    

你的数组也没有价值

array('text1', 'text2', 'text3', 'text4');

具有键和值的数组

array('text1' => 'val1', 'text2' => 'val2', 'text3' => 'val3', 'text4' =>'val4');

如果您想获取隐藏字段中设置的内容(提交后)
&lt;input type="hidden" name="text1_default" value="text1_default" /&gt;

if ($_POST["button"] == "Calculate") {
    [...]
   $array_check('text1' => 'v1', 'text2' => 'v2', 'text3' => 'v3', 'text4' =>'v4');
    foreach($array_check AS $key => $value) {
        if(!isset($_POST[$key])) {
            $_POST[$key] = $_POST[$key."_default"];
        } else { echo $_POST[$key];}    
    }
}

现在更改$_POST[$key] 后,您不能将其用于&lt;form&gt;
您不能更改表单中的任何内容。 php 在服务器上运行。

要更改表单值,您必须使用 javascript 之类的客户端库

【讨论】:

    猜你喜欢
    • 2019-03-23
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多