使用PHP_SELF发布后更新表单字段

时间:2013-08-16 19:18:37

标签: php javascript

我正在使用php_self提交表单。数据发布后,我想将计算值传递到同一页面上的另一个表单字段,原始表单。

$ title_insurance字段保持空白。有什么想法吗?谢谢!

<?php
if(isset($_POST['submit']))
{
$sale_price = $_POST['sale_price']; // posted value
$title_insurance = ($sale_price * 0.00575) + 200;

?>
<script type="text/javascript">
document.getElementById("title_insurance").value='<?php echo $title_insurance ; ?>'; 
</script>
<?php     }     ?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>"  method="post" enctype="multipart/form-data">
 <input name="sale_price" type="text" id="sale_price" size="15">
<input name="title_insurance" type="text" id="title_insurance" size="15" value="<?php echo $title_insurance; ?>" />
<input name="submit" type="submit" class="bordered" id="submit" value="Calculate" />    
</form>

4 个答案:

答案 0 :(得分:1)

您想要做的最好是通过AJAX完成。除非您将用户转移到另一个页面并随之发送一些数据,否则<form>构造已过时且无用,或者,如果您已完成获取用户数据并且只想处理输入的内容并显示完成消息。

如果您希望继续在同一页面上进行处理,那么AJAX就是您的选择。使用AJAX的最佳方法是使用单独的处理器文件(PHP)来接收数据,处理数据并将其发回。

要将<form>构造转换为AJAX,您只需删除<form></form>代码并将提交按钮从type="submit"转换为type="button" id="mybutton",然后使用这些ID在按钮和其他元素上获取它们包含的数据并将它们提供给AJAX代码块。底部链接中的示例显示了您需要了解的内容 - 它们是简单,有用的示例。

为了节省资源,您可以为多个AJAX请求使用相同的PHP处理器页面 - 只需发送一个变量(例如'request = save_to_db&amp; first_name = bob&amp; last_name = jones'),并测试“请求”收到后,将确定您的PHP处理器文件的作用并回复。

This post及其中包含的示例将有所帮助。

答案 1 :(得分:0)

先试试

在您的编码中,您错过了此$_POST['button']

<?php
if(isset($_POST['button']))
{
$sale_price = $_POST['sale_price']; // posted value
$title_insurance = ($sale_price * 0.00575) + 200;

?>
<script type="text/javascript">
document.getElementById("title_insurance ").value='<?php echo $title_insurance ; ?>'; 
</script>
<?php     }     ?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>"  method="post" enctype="multipart/form-data">
 <input name="sale_price" type="text" id="sale_price" size="15">
<input name="title_insurance" type="text" id="title_insurance" size="15" value="<?php echo $title_insurance; ?>" />
<input name="button" type="submit" class="bordered" id="button" value="Calculate" />    
</form>

并且还可以参考此FIDDLE它会对您有所帮助..

答案 2 :(得分:0)

getElementById参数中有一个额外的空格:

//                                      VV
document.getElementById("title_insurance ").value='<?php echo $title_insurance ; ?>'; 

答案 3 :(得分:0)

提交按钮名为button,如果您输出的是javascript来修改DOM创建元素title_insurance后需要运行的值。

if(isset($_POST['button']))
{
    $sale_price = $_POST['sale_price']; // posted value
    $title_insurance = ($sale_price * 0.00575) + 200;
}
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>"  method="post" enctype="multipart/form-data">
   <input name="sale_price" type="text" id="sale_price" size="15">
   <input name="title_insurance" type="text" id="title_insurance" size="15" value="<?php echo $title_insurance; ?>" />
   <input name="button" type="submit" class="bordered" id="button" value="Calculate" />    
</form>


<script type="text/javascript">
    document.getElementById("title_insurance").value='<?php echo $title_insurance ; ?>'; 
</script>

在这种情况下更好的方法是忘记javascript,因为它是不必要的并且这样做

// I am assuming you have initialized $title_insurance 
// somewhere above here to its default value!!!!
$title_insurance = isset($_POST['button']) ? ($_POST['sale_price'] * 0.00575) + 200 : $title_insurance;
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>"  method="post" enctype="multipart/form-data">
   <input name="sale_price" type="text" id="sale_price" size="15">
   <input name="title_insurance" type="text" id="title_insurance" size="15" value="<?php echo $title_insurance; ?>" />
   <input name="button" type="submit" class="bordered" id="button" value="Calculate" />    
</form>