显示与将收到的输入不同的值 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();
});
类似的东西?
我想知道是否有一种方法可以在文本类型的输入中显示与发送到 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();
});
类似的东西?