通常,HTML表单将查询参数作为键值对发送,如下所示:
http://blabla/?something=something&this=that
但我需要的是一个生成URL的表单,其中省略了一个查询键:
http://blabla/?something&this=that
据我所知,缺少或空name
属性并不能完全满足我的期望:
<input type="hidden" name="" value="myvalue"/>
导致这一点,带有我不想要的等号:
http://blabla/?=myvalue
我知道这样做并不好,但我需要与现有设计不佳的系统进行交互。
答案 0 :(得分:2)
如果您需要该属性没有值,那么您不应该这样做吗?
<input type="hidden" name="something" value=""/>
会生成您正在寻找的网址http://blabla/?something=&this=that
,只有在某些内容后面带有'='。或者,只是将其完全保留(即,不要定义隐藏的输入类型),您将获得URL http://blabla/?this=that
...
答案 1 :(得分:1)
这些答案在逻辑上是有道理的,但不幸的是,这个系统非常挑剔它将接受哪些字符,任何虚假的等号都会给它带来麻烦。顺便说一下,这是一个创新的接口库OPAC。
我想出了一种方法,即根本不提交表单,而是使用JavaScript将文本框的内容注入动态生成的URL,然后使用window.location打开它:
<form name="search_form" method="get" action="">
<input type="text" size="30" maxlength="100"/>
<input type="submit" value="Search" />
</form>
<script type="text/javascript">
window.onload = function() {
document.search_form.onsubmit = function() {
var term = document.search_form.elements[0].value;
var url = "http://blabla/search/X?d:(electronic books) and ("
+ term + ")&searchscope=1";
window.location = url;
}
}
</script>
我没有做太多的JavaScript,这肯定会引起任何注意到可访问性和Web标准合规性的警报。但是,请放心,它并不比其他任何javascriptaghetti都更糟糕。
答案 2 :(得分:0)
也许我在这里忽略了这一点,但要么在提交表单之前不提交该值或将其设置为null。没有名字输入是不好的做法,所以保留名称。
显然,我们不知道接受表单输入的脚本是如何设置的,但根据我的经验,除非设置了某种疯狂的服务器端验证,否则它不应该咆哮。