隐藏的输入字段未正确更新

时间:2014-10-31 20:30:00

标签: javascript jquery html

我正在尝试获取引荐来源并更新引荐来源,以便我的用户可以返回到他们回来的页面。我有一个隐藏的输入字段,它保存重定向的值。我有一个静态值,以防引用者为空。如果引用者不为空,我想更新它的值。这是我写的代码,我甚至测试了它,它说它已经更新了,但是,我没有被正确地重定向,所以它不起作用。

我写过的JavaScript和HTML(请记住,我已正确链接文件等):

 $(document).ready(function(){
  if (document.referrer != "") {
     document.getElementsByName("redirect").value = document.referrer;
     var test = "false";
     if (document.getElementsByName("redirect").value == document.referrer){
         test = "true";
     }
     alert(test);
     }
  });

<script src="js/referrer.js"></script>
<input type="hidden" name="redirect" value="https://www.google.com" />

我觉得这是一个小错误,或者我可能不会遵循某种标准。

感谢您的帮助!我很感激任何见解!

4 个答案:

答案 0 :(得分:0)

我看不出你给我的东西是什么问题。但我可以说的是,如果你要在一个地方使用JQuery(文档就绪函数),那么你也应该使用它来获取输入字段的值。

如果您在输入字段上放置Id而不是按名称进行操作,这也会有所帮助。 ID是获取特定元素的最佳方式。这也可能是你的问题。

然后使用:

调用它
$("#ID").val()

所以你的代码会变成:

if($("#ID").val() === document.referrer)

我也建议使用三等号。但这完全取决于你。

我从未对document.referrer做过任何事情,但也可能有更好的方法。

答案 1 :(得分:0)

有一件奇怪的事情是你将这两件事彼此相等

 document.getElementsByName("redirect").value = document.referrer;

然后立即测试它们是否彼此相等。

 if (document.getElementsByName("redirect").value == document.referrer)

我不能说这是你的问题,但编码很糟糕,应该修复。

答案 2 :(得分:0)

我认为一封信就是在这里绊倒你。

if (document.getElement**s**ByName("redirect").value == document.referrer){

'byName'没有单数等价物,所以你最终得到一个数组(或者至少是一个类似数组的对象)。与ID不同,允许多个输入具有相同的名称。最简单的解决方案是:

if (document.getElementsByName("redirect")[0].value == document.referrer){

答案 3 :(得分:0)

执行document.getElementsByName将返回一个不包含该值的对象数组。使用getElementsByName时无法更改值(我知道并尝试过)。我已经通过使用getElementById解决了这个问题,它实际上适合我。