我想知道是否有一种方法可以在类型文本的输入中显示与发送给PHP的值不同的值。
例如,假设你有:
显示约翰的 <input type="text" value="John">
。
我可以为用户将值更改为“Doe”,但是为php保留“John”吗?
我可以使用$.attr('value')
和$.val()
之间的差异来实现这一目标吗?
我运行了几个测试,似乎我必须在我的控制器中直接反转它。还有其他解决方案吗?
这里有一点jSFiddle可以玩。
答案 0 :(得分:9)
奇怪的要求确定但......
您无法更改字段的值,只需进行简单的表单提交即可。该领域将尽职尽责地发送其中的任何内容。围绕这个问题有一些hackery方式
所以创建一个字段disable
,然后添加一个隐藏字段。禁用字段永远不会成功,但用户将无法更改字段值,许多浏览器将自动更改字段的样式
<input type="text" name="name" value="John" disabled>
<input type="hidden" name="name" value="Doe">
如您所述,您可以随时更改提交表单时的值。下面的监听器将捕获表单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...
}