免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: imbiss

[AJAX] AJAX中的javascript对下拉菜单的onChange事件的处理 [复制链接]

论坛徽章:
0
发表于 2006-01-08 21:43 |显示全部楼层
不明白。这个selectkey是什么属性?
从代码看,好像要达到这个效果: 如果选择的值不等于1,就让他等于1.
还是没有解决问题,因为有一个多余的".."选项啊,这和多余的"请选择"选项有什么不一样?

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
发表于 2006-01-09 09:54 |显示全部楼层
原帖由 imbiss 于 2006-1-8 21:43 发表
不明白。这个selectkey是什么属性?
从代码看,好像要达到这个效果: 如果选择的值不等于1,就让他等于1.
还是没有解决问题,因为有一个多余的".."选项啊,这和多余的"请选择"选项有什么不一样?



onclick的行动比onchange的速度要快。

如果你不改变值,你是没有看办法获得其结果的。

所以首先用onclick把值付给一个不应该被选择的值,那么你选择了选项,就会发生onchange。

而我们仅仅需要对第一次的操作进行onclick处理,所以用一个key来标识是否处理。

在现有的表单机制下,直接操作于表单本身,没有更好的办法。

如果进行变通,那方法就太多了。

最简单的一个例子,结合DIV标签做一个层,来显示选项,这样子你点什么选项都可以反映的。

论坛徽章:
0
发表于 2006-01-09 21:22 |显示全部楼层
感谢提醒。关键是onclick要早于onchange事件
onclick事件把option选项的值设置为一个不存在的值,索引-1.这样onchange的时候,所有的选项都能点击了。

下面两个例子比较了用和不用onclick的区别。

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <HTML>
  3. <HEAD>
  4. <TITLE> New Document </TITLE>
  5. <META NAME="Generator" CONTENT="EditPlus">
  6. <META NAME="Author" CONTENT="">
  7. <META NAME="Keywords" CONTENT="">
  8. <META NAME="Description" CONTENT="">
  9. </HEAD>
  10. <script language="javascript" type="text/javascript">
  11. <!--

  12. function changeit(){   
  13.         var value = document.getElementById("test").value;                
  14.         alert("your choice is "+value);
  15. }

  16. function resetchoice(){       
  17.         document.getElementById("test").selectedIndex = -1;               
  18. }
  19. -->
  20. </script>

  21. <BODY>
  22. <select name="test" id="test" onchange="changeit();" onclick="resetchoice();">
  23. <option value="1">aaa</option>
  24. <option value="2">bbb</option>
  25. <option value="3">ccc</option>
  26. <option value="4">ddd</option>
  27. </select>

  28. <p>test 2 normal select without onclick event</p>
  29. <select name="test" id="test" onchange="changeit();" >
  30. <option value="1">aaa</option>
  31. <option value="2">bbb</option>
  32. <option value="3">ccc</option>
  33. <option value="4">ddd</option>
  34. </select>
  35. </BODY>
  36. </HTML>
复制代码

具体例子已经用在我的blog上,地址参见一楼。

论坛徽章:
0
发表于 2006-01-13 18:33 |显示全部楼层
原帖由 imbiss 于 2006-1-7 18:09 发表
To crazysoul: 何谓主动触发,请大侠明示
To cooljia :我不用java,所以没去过java板块。
主动触发即可以,即直接调用onchange()方法



你可以在页面的onload事件里加个调用,如
onload = function(){
xxx.onchange(); //这就是直接触发onchange事件
}

论坛徽章:
0
发表于 2006-01-13 18:54 |显示全部楼层
原帖由 crazysoul 于 2006-1-13 18:33 发表




你可以在页面的onload事件里加个调用,如
onload = function(){
xxx.onchange(); //这就是直接触发onchange事件
}


我要点击才触发,不要自动触发。

论坛徽章:
0
发表于 2006-01-14 11:28 |显示全部楼层
原帖由 imbiss 于 2006-1-13 18:54 发表


我要点击才触发,不要自动触发。


那是第一次初始化用的触发,你不是说当有一个一开始就被选中时,再选择没有反映吗,就是用来处理这种情况的.

论坛徽章:
0
发表于 2006-01-14 19:56 |显示全部楼层
你是说onload放在select里面吗? like
<select name="test" onload="resetChoice(); ">

可是,我用ajax只是重写了option,select不会重写,而且也不会被再次onload. onload只能用一次。所以还是用onclick好。

论坛徽章:
0
发表于 2006-01-19 15:21 |显示全部楼层
原帖由 imbiss 于 2006-1-14 19:56 发表
你是说onload放在select里面吗? like
<select name="test" onload="resetChoice(); ">

可是,我用ajax只是重写了option,select不会重写,而且也不会被再次onload. onload只能用一次 ...


真是晕死,是页面onload
select没有onload事件的,建议查找下DHTML手册.
什么是初始化啊?当然就是第一次执行时才叫初始化,而且有且仅有一次.
这种对话真是头痛.

[ 本帖最后由 crazysoul 于 2006-1-19 15:24 编辑 ]

论坛徽章:
0
发表于 2006-01-19 17:22 |显示全部楼层
原帖由 crazysoul 于 2006-1-19 15:21 发表


真是晕死,是页面onload
select没有onload事件的,建议查找下DHTML手册.
什么是初始化啊?当然就是第一次执行时才叫初始化,而且有且仅有一次.
这种对话真是头痛.

是啊,onload只有一次,可是这个下来菜单会多次改变,所以你的方法不适合。

论坛徽章:
0
发表于 2006-01-22 00:52 |显示全部楼层
原帖由 imbiss 于 2006-1-19 17:22 发表

是啊,onload只有一次,可是这个下来菜单会多次改变,所以你的方法不适合。


真是受不了你
<body onload="init()">
<script type="text/javascript">
function init()
{
    document.getElementById('selectobj').onchange();
}

function changed()
{
    alert("changed");
}
</script>

<select id="selectobj" onchange="changed()">
<option>a</option>
<option>b</option>
</select>
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP