重新填充表格:PHP或Javascript

时间:2012-06-26 16:44:08

标签: php javascript forms

我有一个表单提交给运行某些验证的第三方服务。出错时,它会重定向到与表单相同的页面,但会追加包含原始表单值的查询字符串以及错误消息。

由于此查询字符串,浏览器将其视为“新页面”,表单为空白。

我尝试过使用PHP(see Code Review question)的一种方法,归结为:“逐个获取每个字段的GET值,然后将它们设置为表单上的值。”它有点工作,但是:

  • 单选按钮很难处理
  • 我没有完整的PHP功能。我在WordPress中使用PHP-in-pages插件,可以运行某些PHP但是在定义一个函数然后重新使用它时会感到窒息

为了重新填充此表单,建议的方法是什么(PHP或JavaScript ......我在网站上也有jQuery)?

3 个答案:

答案 0 :(得分:3)

Javascript因为PHP会在服务器上增加额外负载。但是验证userinput应该同时进行客户端(JS)和(服务器端)PHP

答案 1 :(得分:2)

除非您动态组装字段,否则使用PHP动态重新填充它们并不容易。如果 ,您可以执行以下操作:

PHP

$fields = [
    'username' => ['type' => 'text', 'value' => $_GET['username']],
    'setting1' => ['type' => 'radio', 'value' => $_GET['radio']]
];
foreach( $fields as $name => $input ) {
    echo "<input type='{$input['type']}' name='{$name}' value='{$input['value']}'>";
}

如果没有,您可以像这样使用PHP和JavaScript的组合。我正在使用jQuery来简化事情。

PHP和JavaScript

$fields = $_GET;
echo '<script type="text/javascript">
var errors = { ';
foreach( $fields as $name => $value ) {
    echo $name . " : '{$value}',\n";
}
echo '};

$.each(errors, function(name, value) {
    $("input[name="+name+"]").val(value);
});
</script>';

这是未经测试的,我知道至少有一个错误(错误数组中的额外逗号),但应该是一个很好的起点。第二种方法的目标是使用PHP组装数组,然后JavaScript可以使用它并执行循环以将这些值分配给每个输入字段。但同样 - 选择框和单选按钮等的逻辑将是复杂的。而不是仅仅分配val,您必须设置checked属性等。

不幸的是我不知道是否有任何库或jQuery插件已经这样做了。

答案 2 :(得分:1)

这是检查radiobutton的jquery代码:

     $("form :radio:checked").before("CHECKED"); //selects only checked buttons

这是阻止表单提交并重新填充字段的代码:

function prepareEventhandlers() {
document.getElementById("formname").onsubmit = function() {
if (document.getElementById("email").value == "") { // e.g. if no email was given
    document.getElementById("errormessage").innerHTML = "it didnt work!";
    return false;
} else {
    document.getElementById("errormessage").innerHTML = "";
    return true;
}
};
}


window.onload = function () {
prepareEventhandlers();
}
祝你好运!