提交缺少参数名称的HTML表单

时间:2010-07-16 15:08:54

标签: html forms

通常,HTML表单将查询参数作为键值对发送,如下所示:

http://blabla/?something=something&this=that

但我需要的是一个生成URL的表单,其中省略了一个查询键:

http://blabla/?something&this=that

据我所知,缺少或空name属性并不能完全满足我的期望:

<input type="hidden" name="" value="myvalue"/>

导致这一点,带有我不想要的等号:

http://blabla/?=myvalue

我知道这样做并不好,但我需要与现有设计不佳的系统进行交互。

3 个答案:

答案 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。没有名字输入是不好的做法,所以保留名称。

显然,我们不知道接受表单输入的脚本是如何设置的,但根据我的经验,除非设置了某种疯狂的服务器端验证,否则它不应该咆哮。