我正在处理一个表单,我希望根据表单提交的输入值更改表单操作。这需要使用PHP来完成。
这是我迄今为止所做的尝试:
<?php
$action = "";
$input = (isset($_POST["hp"]));
if($input == "") {
$action = "action1";
} else {
$action = "action2";
}
?>
<form name="contactForm" id="contactForm" method="post" action="<?php echo $action; ?>">
<!-- form stuff here -->
<input id="hp" name="hp" type="text" class="hp"/>
<input type="submit" name="submit" id="submit" value="Submit Query" class="button" />
</form>
这不起作用,因为hp
的{{1}}字段从一开始就没有值,所以它总是转到action1。
我也尝试过:
(isset($_POST["hp"]))
这没有用,因为Perch(正在建立的CMS)会引发一个<?php
if(isset($_POST['submit'])){
$input = ($_POST['hp']);
$action = "";
if($input == "") {
$action = "action1";
} else {
$action = "action2";
}
}
?>
<form name="contactForm" id="contactForm" method="post" action="<?php echo $action; ?>">
尚未定义的错误。
当我尝试时:
$action
它在提交时根本没有做任何事情,因为它将操作设置为&#34;&#34;。
有什么建议吗?
答案 0 :(得分:2)
以简短的方式写作
$action = isset($_POST['hp'])?'action2':'action1';
就是这样。
答案 1 :(得分:1)
差异化可能性:
最简单的方法可能是将表单发送到同一个PHP文件,在此文件中,通过POST获取此输入的内容并重定向到正确的文件。
第二个选项,可以通过JavaScript在提交时添加事件,防止默认操作阻止提交,然后检查输入值,设置操作和提交表单:
<form name="contactForm" id="contactForm" method="post" action="">
...
</form>
<script>
document.querySelector('#contactForm').addEventListener('submit', function(e) {
//Prevent default submit
e.preventDefault();
//Check input value
if (...) {
this.action = "page1.php";
} else if (...) {
this.action = "page1.php";
}
//perform submit form.
this.submit();
});
</script>
这可能是最好的形式,但最简单的是,这个表单是基于使用像Vue.js,KnockoutJS或RactiveJS这样的数据绑定库来根据输入值在模型对象中设置动作字符串
然后,在HTML表单标签中,使用所选库的绑定语法设置模型数据的值:
//Vue.js syntax
<form name="contactForm" id="contactForm" method="post" :action="action">
//Ractive.js syntax
<form name="contactForm" id="contactForm" method="post" action="{{action}}">
如果您对PHP很新颖并且不了解JavaScript,那么第一个选项可能是最适合您的,如果您知道JavaScript并且您知道如何使用事件,但从未使用过绑定库,那么更推荐第二个选项。
如果您使用某些数据绑定库(或实现数据绑定的框架,如Angular),第三个选项可能是最适合您的。
答案 2 :(得分:0)
如果第2版和第3版不起作用,则必须缺少输入:
<input type="submit" name="submit">
您可以将该按钮添加到表单,也可以更改代码以使用if isset($_POST['hp'])
<?php
$action = "";
if(isset($_POST['hp'])){
$input = ($_POST['hp']);
if($input == "") {
$action = "action1";
} else {
$action = "action2";
}
}
?>
答案 3 :(得分:0)
以上答案对我都没有用,所以这就是我最后要做的事情。
用例:
代码说明:
代码段:
candWord