显示输入的不同值,将以php的形式接收

时间:2016-07-06 15:36:02

标签: javascript php html input html-form-post

我想知道是否有一种方法可以在类型文本的输入中显示与发送给PHP的值不同的值。

例如,假设你有:

显示约翰的

<input type="text" value="John">

我可以为用户将值更改为“Doe”,但是为php保留“John”吗?

我可以使用$.attr('value')$.val()之间的差异来实现这一目标吗?

我运行了几个测试,似乎我必须在我的控制器中直接反转它。还有其他解决方案吗?

这里有一点jSFiddle可以玩。

3 个答案:

答案 0 :(得分:9)

奇怪的要求确定但......

您无法更改字段的值,只需进行简单的表单提交即可。该领域将尽职尽责地发送其中的任何内容。围绕这个问题有一些hackery方式

选项1 - 隐藏字段

所以创建一个字段disable,然后添加一个隐藏字段。禁用字段永远不会成功,但用户将无法更改字段值,许多浏览器将自动更改字段的样式

<input type="text" name="name" value="John" disabled>
<input type="hidden" name="name" value="Doe">

选项2 - 更改提交

上的值

如您所述,您可以随时更改提交表单时的值。下面的监听器将捕获表单submitt使用jQuery,因为你问这个方式

$("form").on( "submit", function( event ) {
  event.preventDefault();
  $('input[name="name"]').val('Doe');
  $("form").submit();
});

答案 1 :(得分:2)

如果您对(纯)PHP解决方案持开放态度,请确保可以。

旁注:如果最终用户禁用Javascript,最好使用服务器端方法(作为Plan-B)。

鉴于用户将替换输入中的“已显示”值。

输入需要保存name属性才能使此方法有效。

<?php 

if(!empty($_POST['name'])){

   echo $name = $_POST['name']; // Will echo what was replaced in the input

}

else{
 echo $name = $_POST['name']; // Will echo the value that was already set in the input
}

?>


<form method="post">

<input type="text" value="John" name="name">

<input type="submit">

</form>

注意:echo $var = "something";是有效的语法。

编辑:

目前还不清楚你想在这里实现什么目标。但是,您可以使用隐藏属性并从输入中删除value="John"

用户需要填写输入内容。

如果输入为空白,则以下仅输出“Doe”,如果输入已填充,则输出两者。

<?php 

if(!empty($_POST['name'])){

   echo $name = $_POST['name'];

}

    else{
     echo $name = $_POST['name'];
    }


if(isset($_POST['hidden_name_value'])){

   echo $hidden = $_POST['hidden_name_value'];

}



?>


<form method="post">

<input type="text" name="name">

<input type="hidden" name="hidden_name_value" value="Doe">

<input type="submit">

</form>

答案 2 :(得分:0)

1.你应该添加一个像

这样的变量名
<input type="text" name='John' value="Doe">

在 PHP 中,var_dump('John') 将导致 'Doe'

但显然这不是很聪明的方法,特别是如果你有多个输入字段,所以我建议

2.使用像

这样的数组
<input type="text" name='person[John]' value="Doe">
<input type="text" name='person[Fred]' value="Flintstone">

在PHP中你可以有选择地测试

if( isset($_POST['person']['John']) ) {
   ... do something ...
}elseif( isset($_POST['person']['Fred']) ) {
   ... do something different...
}