0

カスタム読み取り専用モードでいくつかのHtml.DropDownListコントロールを表示したいと思います。コントロールは下にあるポップアップを開くことができるはずですが、ユーザーが選択した値を保存するべきではありません。たとえば、次の3つの値を持つHtml.DropDownListコントロールがあります。値1値2値3

コントロール「値2」の選択項目

ユーザーには、「値2」が表示されたコンボボックスコントロールが表示されます。ユーザーがコントロールポップアップをクリックすると、3つの値すべてが開かれるはずです(通常のコンボボックスコントロールの場合と同様)。ユーザーが「値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 に答える