2015-04-23 72 views
2

我正在使用php。 有两个输入,aa和bb。 aa是用户可以输入内容的文本输入,并且我希望bb(这是一个隐藏的输入)以aa的输入值提交。 我试过这个,但是,当提交表单时,似乎aa_value在输入bb中为空。如何实现?在隐藏输入中,如何在另一个输入中获取输入文本值?

aa_value() { 

       $value = ''; 
       if (isset($_POST['aa'])) 
         $value = $_POST['aa']; 
       echo $value; 

} 

<input type="text" name="aa" id="aa" value="<?php aa_value(); ?> 

<input type="hidden" name="bb" id="bb" value="<?php aa_value(); ?> 
+2

PHP在输出前执行。因此,除非在表单被加载之前'aa_value()'已经有了一个值,否则你的隐藏输入永远不会有值。 – icecub

+1

或者更容易解释:在提交表单之前,您无法调用PHP函数。改为使用Javascript函数,或者直接删除隐藏的输入,并在后端的2个独立变量中保存'$ _POST ['aa']',因为它们无论如何都是相同的。 – icecub

+0

看起来很合理,但是,为什么aa没有问题? – wenlujon

回答

0

PHP是服务器端的语言,所以它会执行之前呈现在浏览器的HTML。 您需要使用javascript或jquery来解决问题。 使用下面的代码模糊或更改。

<input type="text" name="aa" id="aa" value="<?php aa_value(); ?> 

<input type="hidden" name="bb" id="bb" value="<?php aa_value(); ?> 

<script> 
$(document).ready(function() 
{ 
$('#aa').blur(function() 
{ 
$('#bb').val($('#aa').val()); 
}); 

}); 
</script> 

在submition表单后,您可以获得aa和bb值。

+0

这是正确的想法,但错误的事件。改用'input'事件。 – robbmj

+0

你的意思是改变$('#aa')。blur(function()to $('#aa')。input(function()? – wenlujon

+0

刚刚试过了,它没有工作 – wenlujon

0

这是测试和工程完美的罚款。如果你想看到神奇的工作,将隐藏的文本字段更改为正常的:

<?php 

if(isset($_POST["aa"]) && !empty($_POST["aa"])){ 
    $value = $_POST["aa"]; 
} else { 
    $value = ""; 
} 

?> 

<!DOCTYPE HTML> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title>Example</title> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
     <script> 
     $(document).ready(function(){ 
      $(document).on("change keyup mouseup", "#aa", function(){ 
       $("#bb").val($("#aa").val()); 
      }); 
     }); 
     </script> 
    </head> 
    <body> 
     <input type="text" name="aa" id="aa" value="<?php echo $value; ?>" /> 
     <input type="hidden" name="bb" id="bb" value="<?php echo $value; ?>" /> 
    </body> 
</html> 
+0

非常感谢!它应该工作 – wenlujon

+0

@wenlujon如果您的问题得到解答,请标记正确的答案,所以问题不永远保持开放,这也是向那些花时间帮助你的人表示感谢的方式。 – icecub

相关问题