HTML:锚定标记在表单GET请求中转换为%23

我有一个html表单,我试图在其GET请求中使用锚标签,以便用户将被发送到页面的特定部分。 我有这样设置:

<form action="www.website.com/page/" method="get">
 <select name="foo">
  <option value="bar#myAnchor">Sample</option>
 </select>
 <input type="submit" value="Submit" />
</form>

用户被重定向到www.website.com/page/?foo=bar%23myAnchor。

相反,我想通过直接链接链接获得与用户相同的结果

我一直无法找到问题,但它似乎是一个浏览器问题,因为我无法用html实体或任何其他替代编码解决它。

你怎么看?


我认为你必须使用JavaScript。 一个简单的实现可能看起来像这样。

function goToUrl(){
  var url = 'http://' + window.location.hostname + '/' + document.querySelector('#urlSelector').value;
  window.open(url);
  //you could set window.location.href as well
}
<select id="urlSelector">
  <option>bar#myAnchor</option>
</select>
<button onclick="goToUrl()">Submit</button>

这是预料之中的。 每当我们提交表单时,这些值都是URL编码的。 因此,就你的情况而言,当表单被提交时,URL变成了

www.website.com/page/?foo=bar%23myAnchor

如果你打开网络标签,你可以看到这是foo = bar#myAnchor的编码版本

如果您只想让用户转到链接,请使用锚标签并根据您的逻辑更改href属性。

希望有所帮助!

链接地址: http://www.djcxy.com/p/89013.html

上一篇: HTML: Anchor tag is converted to %23 on form GET request

下一篇: HTML anchor not working on page load