如何使用表单输入中的值填充表单的action参数?

时间:2013-05-30 22:58:57

标签: javascript html forms url-parameters

我知道我可以从表单中传递查询参数,并期望它们在查询字符串中:

<form method="GET">
  <input type="text" name="param" value="value" />
  <input type="submit" value="submit" />
</form>

这导致

http://blah-blah-blah/blah?param=value

但是,在我的webapp中,我正在使用路径参数。要访问图书馆中的一本书#459,您需要访问

/books/459

并检查一个,POST到

/books/459/checkout

其中459是路径参数。当我尝试

<form action="/books/{book_id}">...</form>

它需要我

/books/%7Bbook_id%7D

而不是

/books/459

我是否需要javascript或其他东西来构建URI?

3 个答案:

答案 0 :(得分:1)

您可能需要以下内容:

<form onsubmit="this.action = this.action + this.book_id.value;" ...>

然而,使动作依赖于脚本是糟糕的设计。您的服务器处理URI ...?book_id=value更加健壮,它根本不需要任何客户端脚本。

答案 1 :(得分:0)

如果您使用PHP生成HTML,则下面的代码应该可以使用(未​​经测试)。

$book_id = 459;
<form action="/books/{$book_id}">...</form>

或者,您可以使用JavaScript动态修改html。最好不要这样做,因为有些用户可能会禁用JavaScript。 (另)

$('form').attr('action','/books/' + book_id);

答案 2 :(得分:0)

  • 感谢RobG

  • 我从移动应用程序调用WhatsApp时也使用了同样的方法

  • 效果很好

    <form action="https://wa.me/" 
    onsubmit="this.action = this.action + this.mobile.value; this.submit();">
      <input type="tel" name="mobile" size="10" value="91xxxxxxxxxx"/>
      <input type="text" name="text" value="Thanks Vijayan!" />
      <input type="submit" value="WhatsApp" />
    </form>