Как удалить / изменить jQuery UI autocomplete Helper text?


похоже, что это новая функция в jQuery UI 1.9.0, потому что я использовал jQuery UI много раз раньше, и этот текст никогда не всплывал.

не удалось найти ничего связанного с документацией API.

Итак, используя базовый пример автозаполнения с локальным источником

$( "#find-subj" ).autocomplete({
    source: availableTags
});

когда поиск совпадает, он показывает этот связанный вспомогательный текст:

' 1 результат доступен, используйте клавиши со стрелками вверх и вниз, чтобы направлять.-

Как я могу отключить его хорошим способом, а не удаляя его с помощью селекторов JQuery.

10 92

10 ответов:

Я знаю, что это было asnwered, но просто хотел дать пример реализации:

$("#find-subj").autocomplete({
    source: availableTags,
    messages: {
        noResults: '',
        results: function() {}
    }
});

это используется для доступности, простой способ скрыть это с помощью CSS:

.ui-helper-hidden-accessible { display:none; }

или (см. комментарий Даниила ниже)

.ui-helper-hidden-accessible { position: absolute; left:-999em; }

верхний ответ здесь достигает желаемого визуального эффекта, но побеждает объект jQuery, имеющий поддержку ARIA, и немного диковат для пользователей, которые полагаются на него! Те, кто упоминал, что jQuery CSS скрывает это для вас, правы, и это стиль, который делает это:

.ui-helper-hidden-accessible {
    border: 0;
    clip: rect(0 0 0 0);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    width: 1px;
}

скопируйте это в свою таблицу стилей вместо удаления сообщения, пожалуйста :).

по данным этот блог:

теперь мы используем Aria live регионы, чтобы объявить, когда результаты становятся доступными и как перемещаться по списку предложений. Объявление можно настроить с помощью опции сообщения, которая имеет два свойства: noResults для тех случаев, когда элементы не возвращаются, и результаты для тех случаев, когда по крайней мере один элемент возвращается. В общем, вам нужно будет только изменить эти варианты если вы хотите, чтобы строка, которая будет записана в различный язык. Опция сообщения может быть изменена в будущих версиях, пока мы работа над полным решением для струнных манипуляций и интернационализация всех плагинов. Если вы заинтересованы в опция сообщения, мы рекомендуем вам просто прочитать источник; соответствующий код находится в самом низу плагин автозаполнения и всего несколько строк.

...

Так как это относится к виджет autocomplete? Ну, теперь, когда вы поиск для элемента, если у вас установлен экран чтения он будет читать вы что-то вроде "1 результат, используйте вверх и вниз клавиши со стрелками плавать.". Круто, да?

Так что если вы идете в github и посмотрите на автозаполнение исходный код, вокруг строки 571 вы увидите, где это фактически реализовано.

добавление jQuery css также работало для удаления учебного текста.

<link
 rel="stylesheet"
 href="http://code.jquery.com/ui/1.9.0/themes/smoothness/jquery-ui.css" />

поскольку это там по причинам доступности, вероятно, лучше всего скрыть его с помощью CSS.

однако, я бы предложил:

.ui-helper-hidden-accessible { position: absolute; left: -9999px; }

вместо:

.ui-helper-hidden-accessible { display:none; }

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

Ну, этот вопрос немного старше, но текст не отображается вообще, когда вы включаете соответствующий файл css:

<link
 rel="stylesheet"
 href="http://code.jquery.com/ui/1.9.0/themes/YOUR_THEME_HERE/jquery-ui.css" />

конечно, вы должны вставить фактическую тему вместо YOUR_THEME_HERE например, "гладкость"

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

$(document).ready(function() { //pushing the autocomplete helper out of the visible page
    $(".ui-helper-hidden-accessible").css({"position": "absolute", "left":"-999em"}) //{"display","none"} will remove the element from the page
});

Я не поклонник манипулирования CSS с JS, но в этом случае я думаю, что это имеет смысл. Код JS создал проблему в первую очередь, и проблема будет решена несколькими строками ниже в том же файле. IMO это лучше, чем решение проблемы в отдельном файле CSS, который может быть отредактирован другими людьми ,которые не знают почему.класс ui-helper-hidden-accessible был изменен таким образом.

стиль его, как сама тема jQuery стили его. Многие другие ответы предлагают включить целую таблицу стилей, но если вы просто хотите соответствующий CSS, вот как это делается в http://code.jquery.com/ui/1.9.0/themes/smoothness/jquery-ui.css:

.ui-helper-hidden-accessible { 
    position: absolute !important; 
    clip: rect(1px 1px 1px 1px); 
    clip: rect(1px,1px,1px,1px);
}

jQuery CSS .ui-helper-скрытый-доступный находится в темах/базе/ядре.файл CSS. Вы должны включить этот файл (как минимум) в свои таблицы стилей для прямой совместимости.