没有javascript的非静态表单操作?

时间:2011-07-24 18:00:05

标签: php javascript html

我有<form> action属性。

我想根据action的值更改<input>的值。

该值由用户提供。如果值为 page1.php ,则表单将提交给 page1.php 。如果值为 page2.php ,表单将提交给 page2.php ,依此类推。

现在我正在使用JavaScript实现这一点,但是在禁用JavaScript的浏览器上它无效。

有没有办法在没有JavaScript的情况下使action非静态?

2 个答案:

答案 0 :(得分:2)

您可以在不调用任何javascript的情况下执行此操作。

PHP示例;

<?php
/*if no destination was set previously the form will post back to itself*/ 
$action=isset($_Request['destination'])?$_Request['destination']:'';
?>
<form name='a-form-name' action="<?php echo $action;?>">

/*include other inputs etc as required.
Include a 'destination' input in _all_ forms involved.
You can of course name it whatever you like.  But should always be the same name in all forms involved.
*/

<input type='hidden' name='destination' value='the-desired-destination-of-next-action'>

<input type='submit' name='whatever' value='Click here'>
</form>

当您按下提交按钮时,它将转到您在上一次提交中设置的任何目的地或网址查询字符串中的“目的地”。

如果需要,您甚至可以通过使用变量来使目标隐藏输入的值动态化。使用此方法分支可以非常简单和广泛。 HTH

答案 1 :(得分:1)

如果您只想在服务器端收到该值,而不是使用get,因为表单的method将起作用(最终会得到page.php?my_var_name=my_var_value)。

但是,如果您希望根据输入的值将表单指向完全不同的页面,则必须使用JS,或者在“catchall”页面上使用获取表单的服务器端,并根据值重定向到最终页面。