找回密码
 FreeOZ用户注册
查看: 1560|回复: 7
打印 上一主题 下一主题

[论坛技术] Javascript链接与表单跳转的一个问题

[复制链接]
跳转到指定楼层
1#
发表于 20-6-2009 12:26:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?FreeOZ用户注册

x
  1. <script type="text/javascript">
  2. window.onload=initPage;

  3. var globalCounter = 1;

  4. function initPage()
  5. {
  6.   document.getElementById('href-test').onclick=doHref;
  7.   document.getElementById('form-test').onsubmit=doForm;
  8. }

  9. function doHref()
  10. {
  11.   document.getElementById('result').innerHTML += '
  12. ' + this.innerHTML + globalCounter++;
  13.   return false;
  14. }

  15. function doForm()
  16. {
  17.   document.getElementById('result').innerHTML += '
  18. ' + this.inputValue.value + globalCounter++;
  19.   return false;
  20. }
  21. </script>

  22. <form id="form-test" action="#" method="get">
  23. <input name="inputValue" />
  24. </form>

  25. <p>
  26. <a href="#" id="href-test">hello</a>
  27. </p>
  28. <p>
  29. <span id='result'></span>
  30. </p>
复制代码
回复  

使用道具 举报

2#
 楼主| 发表于 20-6-2009 12:30:38 | 只看该作者

代码二

  1. <script type="text/javascript">
  2. //window.onload=initPage;

  3. var globalCounter = 1;

  4. function initPage()
  5. {
  6.   document.getElementById('href-test').onclick=doHref;
  7.   document.getElementById('form-test').onsubmit=doForm;
  8. }

  9. function doHref(obj)
  10. {
  11.   document.getElementById('result').innerHTML += '
  12. ' + obj.innerHTML + globalCounter++;
  13.   return false;
  14. }

  15. function doForm(obj)
  16. {
  17.   document.getElementById('result').innerHTML += '
  18. ' + obj.inputValue.value + globalCounter++;
  19.   return false;
  20. }
  21. </script>

  22. <form id="form-test" action="#" method="get" onsubmit="javascript:doForm(this)">
  23. <input name="inputValue"/>
  24. </form>

  25. <p>
  26. <a href="#" id="href-test" onclick="javascript:doHref(this)">hello</a>
  27. </p>
  28. <p>
  29. <span id='result'></span>
  30. </p>
复制代码
回复  

使用道具 举报

3#
发表于 20-6-2009 12:32:44 | 只看该作者
什么是问题?
回复  

使用道具 举报

4#
 楼主| 发表于 20-6-2009 12:33:19 | 只看该作者

这两段代码几乎就没有区别

但出来的结果非常不同。
通过return false,在代码一里,整个处理都很正常。
但在代码二里,form出来的结果是非常不同的,根本就显示不了,因为跳转了;而link则可以显示,但多了个#的大尾巴。

其实问题就在于网页跳转。我想知道,为什么用代码二,我明明return了false,但还是出现网页的跳转?而且在代码二中,我也不能采用this关键字,只能传值到函数中。
回复  

使用道具 举报

5#
发表于 20-6-2009 12:39:55 | 只看该作者
我觉得是因为用的onsubmit的原因吧
回复  

使用道具 举报

6#
发表于 20-6-2009 12:47:25 | 只看该作者
你试试把 onsubmit="javascript:doForm(this)"
改成:
onsubmit="return doForm(this);"
回复  

使用道具 举报

7#
 楼主| 发表于 20-6-2009 12:50:26 | 只看该作者


嗯,的确是这个问题。所以,这个东西验证了直接在html里面写onsubmit=与在onload里装配一个.onsubmit=是完全不同的东西来的,
对不?
回复  

使用道具 举报

8#
发表于 20-6-2009 15:16:02 | 只看该作者

回复 #7 key 的帖子

Javascript有太多tricky的地方,不同的引擎和执行环境效果也不同,只能多试了,没有办法。
回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+11, 31-3-2025 21:54 , Processed in 0.037440 second(s), 24 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表