显示一个不同的值,从一个输入,什么将被接收为php

qco9c6ql  于 2023-04-10  发布在  PHP
关注(0)|答案(4)|浏览(100)

我想知道是否有一种方法可以在文本类型的输入中显示一个不同于发送给PHP的值。
例如,假设你有:
<input type="text" value="John">显示器,约翰。
我可以将用户的值更改为“Doe”,但将PHP的值保留为“John”吗?
我可以使用$.attr('value')$.val()之间的差异来实现这一点吗?
我运行了几个测试,似乎我将不得不直接在我的控制器中反转它。有其他解决方案吗?
这里有一个小jSFiddle玩。

j8yoct9x

j8yoct9x1#

这是一个奇怪的要求,但...
你不能改变字段的值,只是做一个简单的表单提交。字段会忠实地发送它里面的任何内容。有一些黑客的方法可以解决这个问题。

选项1 -隐藏字段

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

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

选项2 -提交时修改值

正如你所提到的,你可以在表单提交的时候修改这个值。

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

5gfr0r5j2#

如果你愿意接受一个(纯)PHP解决方案,你当然可以。
旁注:最好有一个服务器端方法(作为计划B),如果最终用户禁用Javascript。
给定用户将替换输入中的“已显示”值。
输入需要包含一个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>
bejyjqdl

bejyjqdl3#

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

xpcnnkqh4#

为什么不使用data-value属性来表示您想在PHP中使用的值?

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

是这样吗

相关问题