显示与将收到的输入不同的值 php

Show a different value from an input that what will be received as php

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

例如,假设您有:

<input type="text" value="John"> 显示 John.

我可以将用户的值更改为 "Doe",但将 php 的值保持为 "John" 吗?

我可以利用 $.attr('value')$.val() 之间的差异来实现吗?

我 运行 进行了一些测试,看来我必须直接在我的控制器中将其反转。还有其他解决方案吗?

这里有一点 jSFiddle 可以玩。

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

旁注:如果最终用户禁用 Javascript.

,最好使用服务器端方法(作为计划 B)

考虑到用户将替换输入中“已显示”的值。

为了使此方法起作用,输入需要包含名称属性。

<?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>

确实是一个奇怪的请求,但是...

您不能更改字段的值,只能进行简单的表单提交。该领域将尽职尽责地发送其中的任何内容。有一些黑客方法可以解决这个问题

选项 1 - 隐藏字段

所以制作一个字段,disable它,并添加一个隐藏字段。禁用的字段永远不会成功,尽管用户将无法更改字段值并且许多浏览器会自动更改字段的样式

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

选项 2 - 更改提交时的值

如您所述,您可以在提交表单时随时更改值。下面的侦听器将捕获使用 jQuery 提交的表单,因为你是这样问的

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

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...
}

为什么不为要在 PHP 中使用的值使用数据值属性?

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

类似的东西?