2014-07-22 181 views
0

我想填充一个下拉列表中有几个项目,并选择一个默认项:选择下拉列表项而不触发onchange事件?

<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包装这个代码来实现这个目标吗?

+0

你特别想要PHP代码或JavaScript是可以接受的吗?另外,为什么你不能使用'onclick'并在'onclick'处理程序中附加'onchange'? – mechalynx

+1

你在说什么毫无意义。由于该标签上的'selected'命令,您的选择选项将加载选项'This is the third item'。当你改变这个选项时,说'这是第二个项目',那么你的onchange会被解雇。如果它在页面加载时触发,而不是在另一个地方再次调用它。 –

+0

您可以在页面加载后从javascript生成onchange事件。 – Julian

回答

0

?!

在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已经设置“选择”的选项属性(或您的问题没有很好的标记),这是设置在页面加载时的默认选项的最佳场所,根本不需要JavaScript。

如果您有兴趣了解如何让PHP为选择元素写出HTML并正确地将选定属性分配给预期选项,那么我认为您需要编写一个新问题来吸引PHP民众。


要么你有其他电话您DoSomething的功能,或者你已经过于简单化的例子,你实际使用框架的事件处理程序绑定到字段,也许你不小心叫你的函数,而不是分配它,例如:

mySelect.onchange = DoSomething(); // oops, this calls DoSomething right away. 

mySelect.onchange = DoSomething; // this sets DoSomething as the event handler. 
相关问题