【问题标题】:Check if Selection Changed in OnClick event检查 OnClick 事件中的选择是否更改
【发布时间】:2010-07-26 12:17:36
【问题描述】:

注意:标记为答案的答案,回答标题中的问题。但是,我的潜在问题(使用提前输入下拉菜单)通过迁移到 IE8 得到了解决。

我有一个下拉列表,当我点击一个新的选择时,我想引起回发(“this.form.submit()”)但前提是点击下拉列表只是改变了选择。

注意,onchange将无法正常工作,因为当键盘更改时,我不想回发,因为它是一个类型的下拉列表。

我还想我可以使用 OnChange 并检查更改是否是由鼠标引起的。

如果我们能想出这两种解决方案,我会看看哪个效果更好?

非常感谢您的帮助!!!!!!

编辑:更多信息:

自动回发=真;不管用。 (不希望它在键盘更改选择时回发)

onBlur = doPostBack;我试过这个,但结果不是最优的。用户必须在用鼠标做出选择后点击关闭 ddl。

我认为,另一种说明我想做的事情的方法是在 OnChange 和 OnClick 事件同时触发时进行回发。

【问题讨论】:

    标签: javascript asp.net drop-down-menu onclick onchange


    【解决方案1】:

    在 OnClick 事件中,我有设置 ddl.value = true; 的 javascript;

    在 OnChange 事件中,我检查 ddl.Value = true 如果是,我回发并将其设置为 false。

    在 OnKeyDown 上,我设置 ddl.Value = false 以便当我单击 ddl 时,它只会在我用鼠标更改选择时回发,如果我按下一个键以使用预先输入功能,它不会回发。

    不是最优雅的解决方案,但它有效,你必须给我的创造力。

    注意:此解决方案与在 OnKeyDown 上触发的脚本结合使用,该脚本运行 type-ahead-ddl(即,当您按下某个键时将您移动到最近的选择)并在您按下回车时回发。

    【讨论】:

    • 在这个问题的其他地方有人问过,所以我将定义一个“提前输入下拉列表”,一个 taddl(提前输入下拉列表)就像一个访问组合框。当您输入“A”时,它会将您带到 As,但是当您输入第二个字符“B”而不是像正常的 ddl 功能那样将您带到“B”时,它会将您带到“AB”。
    【解决方案2】:

    您尝试过 AutoPostBack="true" 吗?

    【讨论】:

    • 不幸的是,这不起作用,原因与仅使用 OnChange 事件不起作用的原因相同。每次用户在打字时输入字母时,提前输入下拉菜单都会更改选择。这会不必要地触发 autopostback 和 onChange 事件。
    • 好吧,每次用户输入一个字母时,您的 AJAX 都会触发事件。将事件处理程序添加到 onblur 会完成您正在寻找的东西吗? onblur="__doPostback...."
    • 什么是“提前输入下拉列表”?
    • 这是第三方控制吗?我不明白您所描述的内容与现代浏览器中的基本下拉列表之间的区别。
    • IE7、IE8、Firefox 3 都不需要任何 javascript
    猜你喜欢
    • 1970-01-01
    • 2010-10-03
    • 2017-03-10
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 2020-08-11
    相关资源
    最近更新 更多