2012-02-14 2 views
0

まだ重複はありません。
私はこの回答をどこにも見つけることができません。jqueryを使用して以前に選択した値を保持できる選択肢にデフォルトのオプションを配置します。

ウェブアプリケーション用の小さなプラグインを作成していますが、すべての選択ボックスに無効のデフォルトオプションを設定します:<option disabled='disabled'>-Select-</option>

これは、ユーザーが自分の情報に戻って編集できることを除いて、簡単に実行できます。

if ($this.val()) { 
          ... 
         } else { 
          $this.prepend("<option disabled='disabled' class='disabled'>-Select-</option>")[0].selectedIndex = 0; 
         } 

私は一例であり、他のソリューションを、しようとしていますので、私は選択が選択された値を持っているかどうかを確認する必要があります。

編集:アイデアは、最初の時間は、彼らが来るか、彼らが以前に選択していない場合、それはブラウザがデフォルトのオプション自体(設定どこに問題が発生している無効選択オプション

にデフォルト設定されるということです最初の1つ)。 $ this.val()には値がありますが、実際にはユーザーが値を選択していません。

そこで質問です:
あなたはまだjqueryのを使用して、以前に選択した値を保持することができ、その選択にデフォルトのオプションを配置するにはどうすればよいですか?

+0

しかし、どのようにユーザーが選択されているオプションを知っているでしょうか? – elclanrs

+0

考えられるのは、初めて入ったとき、または以前に選択していない場合は無効になっている選択肢の選択肢にデフォルトで設定されるということです。 – MrJD

+1

無効になっているオプションにデフォルト設定できないため、無効になっています。私が正しく理解していれば、その最初のオプションでユーザーにいくつかの情報を与えたいが、ドロップダウンで何かを選択するとその情報が消えるようにするのはそうだろうか? – elclanrs

答えて

0

だから私が今やっているdropdownlistforのための私自身のHTMLヘルパーを作っているもの。

これは、ユーザーのデータベース値をselectタグに挿入し、javascriptがそこから取得します。

のHtmlHelper

public static class MvcHtmlExtensions 
{ 
    public static MvcHtmlString DropDownListFor<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, 
     Expression<Func<TModel, TValue>> expression, IEnumerable<SelectListItem> selectList, 
     object htmlAttributes, bool userSelection) 
    { 
     if (userSelection == true) 
     { 
      object additionalAttributes = new { userSelection = expression.}; 

      var newHtmlAttributes = new RouteValueDictionary(htmlAttributes); 
      foreach (var item in new RouteValueDictionary(additionalAttributes)) 
      { 
       newHtmlAttributes[item.Key] = item.Value; 
      } 

      return Html.SelectExtensions.DropDownListFor(htmlHelper, expression, selectList, newHtmlAttributes); 
     } 
     else 
     { 
      return Html.SelectExtensions.DropDownListFor(htmlHelper, expression, selectList, htmlAttributes); 
     } 
    } 
} 

Javascriptを:

var $selectTemplate = $("<option disabled='disabled' class='disabled'>-Select-</option>"); 
      $this.prepend($selectTemplate); 
      if ($this.filter("[userSelection]").attr("userSelection") > 0) { 
       $this.val($this.attr("userSelection")); 
      } else { 
       $this[0].selectedIndex = 0; 
      } 
0

私はこれがあなたの望むものだと信じています。私が間違っているなら私を訂正してください。これは、デフォルトオプション(最初のオプション)を設定し、ユーザーがドロップダウンから実際のオプションを選択したときにそれを削除します。

HTML:

<select id="select"> 
    <option>Default Option</option> 
    <option>Option One</option> 
    <option>Option Two</option> 
    <option>Option Three</option> 
</select> 

jQの:

$('select').change(function(){ 
    var $defaultOpt = $(this).find('option:contains(Default Option)'); 
    if ($defaultOpt) { $defaultOpt.remove(); } 
}); 

例:http://jsfiddle.net/elclanrs/LWfJM/

+0

私が探しているものではありません。私は彼らがページにいるときにそれを削除したくない。私は前にそのページでそれを選択し、後でそのページに戻るなら、それを削除したいと思います。 – MrJD

+0

次に、その情報をどこかに保存する必要があります。私が言ったように、クッキー、またはデータベースなど。 – elclanrs

+0

ページが読み込まれたら、データベースから返されました。したがって、以前にオプションを選択していた場合は、そのオプションが自動的に選択されます。しかし、私はそれを以前編集したので、javascriptでそれを上書きしたくない。 – MrJD

関連する問題