2014-01-08 2 views
2

Я следую this tutorial, чтобы отобразить ошибки проверки в подсказке jqueryui. Проверка отлично работает, но я не в состоянии отобразить правильные сообщения об ошибках, как правильные атрибуты не могут быть условно связан с подсказкой, согласно моему примеру ниже:Как отобразить сообщение об ошибке проверки jqueryui в jqueryui tooltip

$(document).tooltip({ 
     items: ".input-validation-error", 
     content: function() { 

      //debugger; 
      return $(this).attr('data-val-required'); 
     } 
    }); 

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

ответ

4

Поскольку функция content() вызывается по требованию, вы можете предоставить любой текст, который вам нужен, на основе атрибутов this, который является элементом, о котором идет речь.

Вам необходимо проверить элемент и вернуть текст для ошибки проверки. Что-то вроде:

$(document).tooltip({ 
    items: ".input-validation-error", 
    content: function() { 

     //debugger; 
     return $(this).attr('data-val-required') || 
       $(this).attr('data-val-date') || 
       $(this).attr('data-val-number'); // etc etc 
    } 
}); 

Это вернет атрибут проверки данных, который заполняется сообщением об ошибке.

+0

Я все еще не могу заставить это работать правильно, согласно вашему предложению изменяется возврат в соответствии с приведенным ниже: return $ (this) .attr ('data-val-remote') || $ (this) .attr ('data-val-required') || $ (this) .attr ('data-val-equalto'); появляется текстовое сообщение по умолчанию для первого параметра. – Purusartha

+0

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

4

Использования в tutorial ссылается на исходном вопрос, изменение линии 4 от:

@{ Html.ValidateFor(m => m.UserName); } 

к:

@Html.ValidationMessageFor(m => m.Username, null, new {style="visibility:hidden"}) 

Затем измените функцию контента следующим образом:

$(document).tooltip({ 
    items: ".input-validation-error", 
    content: function() { 
     return $("[data-valmsg-for='" + $(this).attr('id') + "']").text(); 
    } 
}); 

По существу, мы не хотим, чтобы оригинальное отображение ValidationMessageFor span (видимость = h idden). Мы просто используем его как контейнер для всплывающей подсказки.

+1

Я использовал стиль = "display: none" вместо свойства видимости, потому что скрытый элемент занимает пространство в форме, даже если его видимость скрыта, а при отображении нет, он не занимает пространство – Yasmine

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