получить значение из входного кендо ComboBox с помощью JQuery

0

Я использую kendo comboBox в своем приложении, и мне нужно получить значение и идентификатор записи из ComboBox, вне фактической функции ComboBox.... Я использую выпадающее меню comboBox в таблице для каждой записи, поэтому я не могу передать идентификатор css для получения значения comboBox... Мне удалось достичь ввода comboBox выбранной записи, и я сделал этот тест, применив цвет фона к нему. Я тестировал.val(), который отлично работает только для ввода текстового поля, но его не происходит для kendo ComboBox...

Большое спасибо

вход

  <td class="N_td">@Html.TextBox("Input_MarkingSchemeTitle_Element", null, new { id = @item.ElementID + "_EMST", @class = "ElementMarkingSchemeTitle k1-grid-input k-textbox_3 _MarkSchemeId_Input" })  </td>

Функция ComboBox

 $("._MarkSchemeId_Input").kendoComboBox({
        minLength: 1,
        filter: 'contains',
        dataTextField: "Name",
        dataValueField: "ID",
        dataSource: {
            type: "json",
            serverFiltering: false,
            transport: {
                read: "/Qualification/GetAllMarkScheme_JSON"
            },
        },
        change: function () {

           alert("value " + this.value() + "   " + this.text());                      
        }
    });

Функция jQuery

$("#ElementTable").on("click", ".k1-grid-confirm", function () {


   $(this).closest('table').find("._MarkSchemeId_Input").css("background", "red");

   var a1 = $(this).closest('table').find("._MarkSchemeId_Input").text(); // doesn't work

        alert("a1  " + a1);
 .....
Теги:
kendo-ui
kendo-combobox

3 ответа

3

Взгляните на демо Kendo, на самом деле это точно показывает, что вас интересует

 var fabric = $("#fabric").data("kendoComboBox");
                var select = $("#size").data("kendoComboBox");
                $("#get").click(function() {
                    alert('Thank you! Your Choice is:\n\nFabric ID: ' +   fabric.value() + ' and Size: ' + select.value());
                });

Поиск значения в вашем примере не работает, потому что вы вызываете метод в элементе html, а не в элементе управления Kendo. Рассмотрим этот пример:

$("#combobox").kendoComboBox({
  dataSource: [ "Apples", "Oranges" ]
});
var combobox = $("#combobox").data("kendoComboBox");
combobox.value("Oranges");

Поэтому в вашем случае выполните следующие действия:

$(this).closest('table').find("._MarkSchemeId_Input").data("kendoComboBox").text()
  • 0
    Я использую data.kendo и использую value () вместе с ним для получения текста, но мое оповещение даже не вызывает .... так как у меня есть особенность, я использую класс с кендо ComboBox, так как у меня есть несколько его экземпляров в таблице ... вот мой код ... var ComboData = $ (this) .closest ('table'). find ("._ MarkSchemeId_Input"). data ("kendoComboBox"); alert (">>>" + ComboData.value ());
  • 0
    Поместите отладчик в метод «нажми» и посмотри, что селектор возвращает тебя в консоль. По звуку вы не назначаете событие правильно или JS ошибка перед предупреждением. find () может возвращать более одного элемента, в этом случае вы используете индексатор для выбора конкретного элемента. $(this).closest('table').find("._MarkSchemeId_Input")[0]
Показать ещё 7 комментариев
2

По дизайну виджет ComboBox копирует все стили и классы CSS из исходного элемента в видимый вход. Это описано здесь. Если вы просмотрите вынесенный HTML, он будет выглядеть так:

  • исходный элемент + код инициализации
    <input class="custom-class" />
    <script>
        $(function() {
            $(".custom-class").kendoComboBox();
        });
    </script>
  • результаты в этом HTML-формате
    <span class="k-widget k-combobox k-header custom-class">
      <span tabindex="-1" unselectable="on" class="k-dropdown-wrap k-state-default">
        <input class="k-input custom-class" type="text" autocomplete="off" style="width: 100%;">
        <span tabindex="-1" unselectable="on" class="k-select">
          <span unselectable="on" class="k-icon k-i-arrow-s" role="button" tabindex="-1">
            select
          </span>
        </span>
      </span>
      <input class="custom-class" data-role="combobox" style="display: none;">
    </span>

Как вы можете видеть, пользовательский класс копируется в элемент оболочки и на видимый вход. Из-за этого вам нужно будет использовать более конкретный селектор, чтобы найти только исходные элементы ввода:

$(".custom-class[data-role=combobox]");

Обратите внимание, что это вернет список элементов ввода. Если вам нужно получить выбранные элементы данных, вам нужно будет их закодировать и получить экземпляр combobox для каждого элемента ввода.

Здесь я подготовил простую демонстрацию jsBin, в которой показано, как это сделать.

  • 0
    мое требование - получить только выбранное 1 при событии щелчка, и мне удалось достичь этого с помощью jQuery $ (this) .closest ('table'). find ("._ MarkSchemeId_Input"). css ("background", "red");
1

Мне удалось решить проблему следующим образом:

<td class="N_td">@Html.TextBox("Input_MarkingSchemeTitle_Element", null, new { id = @item.ElementID + "_EMST", @class = "ElementMarkingSchemeTitle k1-grid-input k-textbox_3 _MarkScheme_Input" })  </td>


 //--get all the MarkScheme from database and put in drop-down 
    $("._MarkScheme_Input").kendoComboBox({
        minLength: 1,
        filter: 'contains',
        dataTextField: "Name",
        dataValueField: "ID",
        dataSource: {
            type: "json",
            serverFiltering: false,
            transport: {
                read: "/Qualification/GetAllMarkScheme_JSON"
            },
        },
        change: function () {

           // alert("value " + this.value() + "   " + this.text());                      //if it need to test selected record data...    
      }
    });


 $("#ElementTable").on("click", ".k1-grid-confirm", function () {


        $(this).closest('table').find("._MarkScheme_Input").css("background", "red");

        //read all the input 'comboxBox' in loop...
        //var _comboBoxInput = $(this).closest('table').find("._MarkScheme_Input").filter("[data-role=combobox]");
        //_comboBoxInput.each(function (idx, input) {
        //    alert("idx " + idx + "  \n input " + input);
        //    var combobox = $(input).data("kendoComboBox");
        //    alert("ID>>>  : " + combobox.value() + ", Text: >>> " + combobox.text());
        //});

        //-------------------------
        var input = $(this).closest('table').find("._MarkScheme_Input");
        var comboboxInput = input.filter("[data-role=combobox]");
        var combobox = comboboxInput.data("kendoComboBox");
        var selectedText = combobox.text();
        var selectedValue = combobox.value();
        var dataItem = combobox.dataItem();

        alert("ID>>>  : " + selectedValue + ", Text: >>> " + selectedText);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню