我有一个简单的表单,我希望能够添加一个仅在用户没有输入值的情况下使用的隐藏值。这些值适用于简单的文本输入字段,可以使用HTML,PHP,JavaScript,JQuery或其任何组合。让我进一步解释,值属性已经设置为包含当前该表单的DB中的值。但是,如果DB中没有该特定字段的当前值,并且用户本身没有输入值,我希望在POST中传递一个默认值。
我做了一些研究并找到了自定义属性等的示例......但这些对我来说不起作用。因为我正在使用一个数组构建器,它将表单中的所有字段作为单个数组传递给新函数。任何帮助将不胜感激!
下面显示的代码是表单的创建......正如你所看到的那样,冗余创建了两个单独的字段,但是锦标赛中存在很多轮次。我还提供了两轮形式的输出HTML代码。如果DB对于相关字段具有NULL值,并且如果用户没有输入他/她自己的值,我想传递值“false”。
$rchkpos = array();
$rchkscore = array();
for ($i=0; $i<=$tournament['numRounds']; $i++)
{
$rchkthis = array("$i" => "round".$i."pos");
$rchkthis2 = array("$i" => "round".$i."score");
$rchkpos = array_merge($rchkpos, $rchkthis);
$rchkscore = array_merge($rchkscore, $rchkthis2);
if ($i > 0)
{
$roundpos = $rchkpos[$i];
$roundscore = $rchkscore[$i];
if (!is_null($stats2[$roundpos])){
$roundposvar = "$stats2[$roundpos]";
}else{
$roundposvar = false;
}
if (!is_null($stats2[$roundscore])){
$roundscorevar = "$stats2[$roundscore]";
}else{
$roundscorevar = false;
}
$team_stats.="
<tr valign='top'>
<td align='center'>" . LANG_MAN_ROUND . " $i " . LANG_MAN_POSITION . "</td>
<td class='alt1' align='center'>
<input type='text' name='round[".$rchkpos[$i]."]' value='$stats2[$roundpos]' size='40' maxlength='5' />
</td>
</tr>
<tr valign='top'>
<td align='center'>" . LANG_MAN_ROUND . " $i " . LANG_MAN_SCORE . "</td>
<td class='alt1' align='center'>
<input type='text' name='round[".$rchkscore[$i]."]' value='$stats2[$roundscore]' size='40' maxlength='5' />
</td>
</tr>";
}
}
输出HTML示例:
<tbody><tr valign="top">
<td align="center">Round 1 Position</td>
<td align="center" class="alt1">
<input type="text" maxlength="5" size="40" value="2" name="round[round1pos]">
</td>
</tr>
<tr valign="top">
<td align="center">Round 1 Score</td>
<td align="center" class="alt1">
<input type="text" maxlength="5" size="40" value="false" name="round[round1score]">
</td>
</tr>
<tr valign="top">
<td align="center">Round 2 Position</td>
<td align="center" class="alt1">
<input type="text" maxlength="5" size="40" value="false" name="round[round2pos]">
</td>
</tr>
<tr valign="top">
<td align="center">Round 2 Score</td>
<td align="center" class="alt1">
<input type="text" maxlength="5" size="40" value="false" name="round[round2score]">
</td>
</tr>
</tbody>
答案 0 :(得分:3)
你可以这样做:
<强> HTML 强>
<input type="text" name="name" />
<input type="hidden" name="name_default" value="name_default" />
PHP (表单提交后)
if(!isset($_POST['name'])) {
$_POST['name'] = $_POST['name_default'];
}
或者像这样做一个aray:
$array_check = array('name', 'telephone', 'gender');
foreach($array_check AS $key => $value) {
if(!isset($_POST[$value])) {
$_POST[$value] = $_POST[$value."_default"];
}
}
请记住,用户可以编辑隐藏输入的值(使用Firebug等开发人员工具),始终检查输入!
答案 1 :(得分:2)
其他可能的方法是在每个html输入中的专用属性中设置默认值,然后使用jQuery替换帖子前的字段值:
// before post
$('input').each(function () {
if ($(this).val() == '')
$(this).val($(this).attr('defaultvalue'));
});