我想在自定义只读模式下显示一些Html.DropDownList控件。 控件应该能够打开底层弹出窗口但不应保存用户选择的值。 例如,我有三个值的Html.DropDownList控件: 价值1 价值2 价值3
控件“值2”的选定项目
用户使用显示的项目“值2”查看组合框控件。 当用户点击控件弹出窗口时,应打开所有三个值(与通常的组合框控件一样)。如果用户选择的值与“值2”不同,则选择的值不应保存在控件中。因此,当用户从基础列表中单击“值3”项时,控件仍应显示选中的“值2”项 有可能吗?
谢谢
答案 0 :(得分:3)
唉。作为您系统的用户,我不会喜欢您在此处创建的内容!我第一次尝试点击值3,并且在没有任何警告的情况下弹回值2,我将假设我误点了,我会马上再试一次。希望我会意识到你正在重新设置下拉列表,但我不会马上得到它,我会生气。
这是一个更好的UI选择:禁用无效的OPTION标签,以便我可以在下拉列表中看到它们,但我无法选择它们。这是jQuery:
$(function () {
$("#select[name=test] option").not(":selected").attr("disabled", true);
});
我从经验丰富的程序员(甚至不是'真正的'设计人员)那里学到,UI设计的最大罪恶是允许用户选择无效的选项。尽你所能避免必须“纠正”用户选择的内容。通过允许他们选择无效选项,然后使用JavaScript立即取消它而没有任何用户反馈,您违反了此准则。
答案 1 :(得分: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);
});
})();
这是工作example。
受另一个StackOverflow answer的启发。