0

我想在自定义只读模式下显示一些 Html.DropDownList 控件。控件应该能够打开底层弹出窗口,但它不应该保存用户选择的值。例如,我有三个值的 Html.DropDownList 控件:值 1 值 2 值 3

控件“值 2”的选定项目

用户看到带有显示项目“值 2”的组合框控件。当用户单击控件弹出窗口时,应打开所有三个值(与通常的组合框控件一样)。如果用户选择与“值 2”不同的值,则不应将所选值保存在控件中。因此,当用户从基础列表中单击项目“值 3”时,控件仍应显示已选择的项目“值 2”是否有可能以任何方式?

谢谢

4

2 回答 2

3

啊。作为您系统的用户,我不会喜欢您在此处创建的内容!当我第一次尝试单击值 3 时,它会在没有任何警告的情况下弹回到值 2,我会认为我单击错误,我会立即重试。希望我会意识到您正在重新设置该下拉列表,但我不会马上得到它,我会很生气。

这是一个更好的 UI 选择:禁用无效的 OPTION 标签,以便我可以在下拉列表中看到它们,但我无法选择它们。这是它的jQuery:

$(function () {
     $("#select[name=test] option").not(":selected").attr("disabled", true);
});

我从一位经验丰富的程序员(甚至不是“真正的”设计人员)那里了解到,UI 设计的最大罪过是允许用户选择无效的选项。尽你所能避免必须“纠正”用户选择的内容。通过允许他们选择一个无效的选项,然后在没有任何用户反馈的情况下使用 JavaScript 立即取消它,您违反了本指南。

于 2012-12-27T13:41:04.777 回答
1

如果你没事。使用 jQuery。这应该适合你。

(function () {
    var previous;
    // Grab the initial value in focus event.
    $("select[name=test]").focus(function () {
        previous = this.value;
    // On change event, use previous to set the value of dropdown.
    }).change(function() {
        $("select[name=test]").val(previous);
    });
})();​

这是工作示例

受另一个 StackOverflow答案的启发。

于 2012-12-27T13:18:35.380 回答