JQuery Получить значения из списка множественного выбора, если выражение MVC3 - PullRequest
1 голос
/ 22 октября 2011

Я пытаюсь перебрать список значений, заполняющих поле выбора, а затем настроить строку на основе результата.Строка должна содержать 1 для каждого выбранного элемента и ноль для каждого элемента, который не выбран.Я пытался использовать опцию #Select: selected, чтобы проверить это, но потом обнаружил, что она выбирает все выбранные опции, так что просто дает мне все 1 в моей строке.Ниже мое поле выбора:

<select multiple="multiple" id="Select">
    @foreach (var val in Model.SelectStuff)
    {
        <option value="@val.Key">@val.Descript</option>
    }
</select>

И JQuery:

var admaList = "";

$("#Select option").each(function () {
    if ($("#Select option:selected")) {  //I know this doesn't work!
        list += "1,";
    }
    else {
        list += "0,";
    }
});

Итак, 2 вопроса.Во-первых, как я могу использовать это (если это возможно), и есть ли список, который я мог бы использовать в JQuery вместо того, чтобы возвращать строку в элемент управления, который мне все равно придется разбивать на список позже?*

Ответы [ 2 ]

3 голосов
/ 22 октября 2011

$ ('# Select'). Val () возвращает массив выбранных опций из элемента множественного выбора.

http://api.jquery.com/val/

Так что, в вашем случае, я не уверен, что строка 0 и 1 на самом деле то, что вы хотите. Если, например, «значением» опций являются идентификаторы, тогда возьмите:

<select id="Select" multiple="multiple">
    <option value="1">Value 1</option>
    <option value="2">Value 2</option>
    <option value="3">Value 3</option>
</select>

Если выбраны 1 и 3, то

$('#Select').val() // returns [1,3]

Если вы хотите передать это на сервер, тогда

var selectedValues = $('#Select').val() || [];
selectedValues.join(","); // return "1,3"
0 голосов
/ 27 октября 2011

Вы пытались не использовать jquery, как это.Это можно сделать с помощью jquery, но также можно использовать модель представления.В представлении вы можете подключить список выбранных значений к вашему списку.Пользователь сможет выбрать один или несколько параметров, и он автоматически заполнит выбранные значения.Ниже приведен пример.Также я напечатал это без компиляции, но я надеюсь, что вы поняли идею.

Вид

@Model SelectStuff

 @using (Html.BeginForm("Index","Home",FormMethod.Post))
        {
            @Html.ValidationSummary(true)
            @Html.ListBox("SelectStuffSelected", Model.SelectStuff, new { @class = "whatever here" })
       // NOTE!!!!PAY ATTENTION HERE SelectStuffSelected will be used in the viewmodel!!!!!


                <p >
                    <input type="submit" value="Submit" />
               </p> 
    }

Контроллер

public ActionResult index()
return view();
[HttpPost]
public ActionResult(SelectStuff model)
{
  return view(model);
}

ViewModel

  public class SelectStuff
    {
    public SelectStuff(){InitialSignature();}

private void InitialSignature()
        {
            List<SelectListItem> IntialSignatureRaw = new List<SelectListItem>();
            IntialSignatureRaw.Add(new SelectListItem
            {
                Text = "Yes",
                Value = "1",
                Selected = true
            });


            IntialSignatureRaw.Add(new SelectListItem
            {
                Text = "No",
                Value = "0"
            });

            SelectStuff= new SelectList(IntialSignatureRaw, "Value", "Text");
        }
//here comes the magic 
        public virtual MultiSelectList SelectStuff {get;set;}
        public virtual List<string> SelectStuffSelected{get;set;}
      //PAY ATTENTION HERE!!!!! do you see SelectStuffSelected is wired to the view above?
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...