0

mvc3 を使用して開発された Web サイトで jquery ui を使用しました。I used jquery ui auto-complete mechanism.

私は次のjquery関数を使用しました-

/// script to load owner for owner dropdown.
$(function () {
    $("#Owner_FullName").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "/Employee/AutocompleteSuggestions",
                type: "POST",
                dataType: "json",
                data:
                    {
                        term: request.term
                    },
                success: function (data) {
                    response($.map(data, function (item) {
                        return { label: item.FullName, value: item.Id }
                    }
                    ))
                }
            })
        },
        minLength: 1,
        focus: function (event, ui) {
            $("#Owner_FullName").val(ui.item.label);
            return false;
        },
        select: function (event, ui) {
            if (ui.item) {
                $("#Owner_FullName").css('border', '');
                $("#Owner_FullName").val(ui.item.label);
                $("#OwnerId").val(ui.item.value);
                return false;
            }
        },
        change: function (event, ui) {
            if (ui.item == null) {
                $("#Owner_FullName").css({ 'border': '1px solid #ff0000' });
                $("#OwnerId").val(null);
            }
        }
    });
});

テキスト ボックスに所有者名を表示し、さらに処理するために OwnerId を隠しフィールドに設定しました。

ユーザーがテキストボックスに入力し、ドロップダウンから項目を選択しない場合の処理​​状況については、change eventを使用し、そのイベントで隠しフィールドを null にリセットし、css をテキストボックスに適用しました。

今私の問題は、テキストボックスフィールドが必須フィールドではないことです。ユーザーがテキストボックスに入力してデータを送信すると、警告の種類のメッセージが表示され、テキストボックスの値がユーザーによってクリアされるまで送信手順が発生しないはずです。

これを処理する方法は?

4

1 に答える 1

0

ユーザーがドロップダウンから選択せずにオートコンプリート ボックスに値を入力したときにエラー状態を表示したい場合は、オートchangeコンプリートのイベントを使用してこれを強調表示し、非表示フィールドを更新できます。

change: function (event, ui) {
  if (ui.item == null || ui.item == undefined) {//I also use the undefined check
    $("#OwnerId").val("");//I have never used null before when using val(). But you always want to clear out the hidden field if the user does not select from the drop down.
      if ($.trim($("#Owner_FullName").val()) == "") {//check and see if the user cleared the field out
        $("#Owner_FullName").css({ 'border': '' });
        //The autocomplete field is blank. Then put code here that allows the submit.
        }
          else
       {
          $("#Owner_FullName").css({ 'border': '1px solid #ff0000' });
          //The autocomplete field is NOT blank. Then put code here that prevents the submit.
       }//close the if = "" statement
    }
  }//close function

別のオプションは、送信時にオートコンプリート フィールドをチェックして、何かが選択されているかどうかを確認することです。何かが選択されていない場合は投稿を停止します。オートコンプリートでリストから何かが選択されているかどうかを確認できます...

$("#Owner_FullName").data("autocomplete").selectedItem != null //or undefined for that matter

これらのいずれかがあなたのために働くかどうか教えてください!

于 2012-09-21T11:18:28.887 に答える