2013-05-09 2 views
0

Я использую DropDownList для поля, которое я редактирую в всплывающем окне сетки Kendo UI, и хотя всплывающие подсказки проверки отображаются без проблем, они не исчезают один раз вход был исправлен.Kendo UI grid popup, сообщение проверки валида DropDownList не очищается

Я создаю DropDownList так:

function serviceDropDownEditor(container, options) { 
    $('<input data-bind="value:' + options.field + '" data-for="' + options.field + '"/>') 
     .appendTo(container) 
     .kendoDropDownList({ 
     optionLabel: "--- select a service ---", 
     dataTextField: "name", 
     dataValueField: "id", 
     dataSource: window.services, // an array I've already fetched from my DB 
     }); 
    } 

Я применить эту функцию к полю service_id, когда я определить источник данных, например:

columns: [ 
    { field: "service_id", 
     title: "Service", 
     editor: serviceDropDownEditor, 
     template: "#= getServiceName(service_id) #" // display the name from the id 
    }, 

Чтобы убедиться, что есть место для размещения подтверждения, я использую the suggestion on this page и добавьте прокладку подставщика ниже DropDownList во время события edit:

edit: function(e) { 
    var grid = $("#grid").data("kendoGrid") 
    var container = grid.editable.element 
    var service_container= container.find("[data-container-for=service_id]") 
    service_container.append('<span class="k-invalid-msg", data-for="#= field #">') 
    }, 

Когда есть ошибка стороне сервера, который относится к этой области (service_id), я нахожу заполнитель, который я создал в edit случае и заменить его на реальное сообщение, как это:

var placeholder = container.find("[data-for=" + field + "].k-invalid-msg") 
placeholder .replaceWith(validationMessageTmpl({ field: field, message: errors[field] })) 

шаблон шаблона проверки содержит те же классы и атрибут data-for как заполнитель.

Он отлично работает при отображении ошибки для DropDownList, но когда я исправляю ошибку (и представляю другую в той же форме, поэтому всплывающее окно остается), исходная ошибка не исчезает.

Итак ... как всплывающие подсказки проверки будут очищены, и что мне нужно сделать? Удалить это вручную в случае?

ответ

0

Попытка вручную очистить ошибки на ниспадающего изменения, например:

function serviceDropDownEditor(container, options) { 
$('<input data-bind="value:' + options.field + '" data-for="' + options.field + '"/>') 
    .appendTo(container) 
    .kendoDropDownList({ 
    optionLabel: "--- select a service ---", 
    dataTextField: "name", 
    dataValueField: "id", 
    dataSource: window.services, // an array I've already fetched from my DB 
    select: function (ev) { 
     var validatable = container.editable.validatable; 
     if (validatable) { 
      var dataItem = this.dataItem(ev.item.index()); 
      if (dataItem === null || dataItem === undefined || dataItem.text == " " || dataItem.text == "&nbsp;") { 
          // force validation is empty (simulate required) 
          validatable.validate(); 
         } else { 
         // hide all error messages if not empty 
          validatable.hideMessages(); 
         } 
        } 
       } 
    }); 

}

Смежные вопросы