选择下拉列表项而不触发onchange事件
Select drop-list item without triggering onchange event?
我想用几个项目填充一个下拉列表,并选择一个默认的项目:
<select onchange="DoSomething(this)">
<option value="abb">This is the second item</option>
<option value="abc" selected>This is the third item</option>
etc...
</select>
然而,我不希望onChange事件被触发(或者我希望onChange触发的代码被忽略),直到用户选择一个项目。此时,onChange事件在页面加载时触发,默认情况下选中的项被选中。
我可以在PHP中包装这段代码来实现这一点-如果是这样,如何?
?!
在JavaScript中直接操作HTML DOM不会触发事件。你甚至可以调用myForm.submit()
,浏览器不会触发表单的onsubmit事件,从而绕过客户端onsubmit验证。
我不知道你试过什么,但这是一种选择的方法,例如下拉列表的第一项:
document.getElementsByTagName('select')[0].getElementsByTagName('option')[0].selected = true;
(http://jsfiddle.net/Jawh6/)
我知道这很粗鲁。通常,您的表单和字段将被命名或以其他方式标识,以便您可以更明确地处理它们:例如document.myForm.mySelect.options[0].selected = true;
因为你的PHP已经在选项上设置了'selected'属性(或者你的问题没有很好地标记),这将是在页面加载时设置默认选项的最佳位置,这根本不需要JavaScript。
如果您对如何让PHP为select元素编写HTML并正确地将所选属性分配给预期选项感兴趣,我认为您需要编写一个新问题来吸引PHP人员。
要么你有其他调用你的DoSomething函数,或者你已经过度简化了你的例子,你实际上使用一个框架来绑定事件处理程序到字段,也许你不小心调用了你的函数,而不是分配它,例如:
mySelect.onchange = DoSomething(); // oops, this calls DoSomething right away.
mySelect.onchange = DoSomething; // this sets DoSomething as the event handler.
相关文章:
- 如何使用javascript和PHP动态触发onChange事件
- Javascript:如何在onChange事件期间更改日期时间值
- JavaScript onchange事件未在IIS7中激发
- 如何在jQuery中为asp:textbox生成onchange事件
- 当触发下拉列表的onchange事件时,使用JavaScript提交表单
- 当select标记触发onChange事件时,从mysql数据库加载html表
- Javascript:OnChange事件,将数组变量传递给另一个函数
- 如何使select onchange事件在页面加载时发生
- 在onchange事件中,可以传递不是当前控件的参数吗
- OnChange事件未激发
- 此multi-onChange事件是否有效
- 如何在Jasmine/Rect中测试带有范围输入的“onChange”事件
- JSON无法处理OnChange事件
- 为什么我的onchange事件发生在页面加载时,而不是在触发时
- 如何在React's onChange事件
- JS:Onchange事件在启动时激活
- JavaScript onChange 事件侦听器对输入表单不起作用
- 如何在 PHP 中使用 OnChange 事件的下拉列表中选择一个选项后,对大量数据行设置分页
- 如何在jQuery中处理输入类型=文件的onchange事件
- Razor Dropdown onchange事件未触发始终未定义