Достижение того, что вы спрашиваете в Materialise, довольно сложно и требует взлома.
Причина в том, что отдельные элементы не имеют те же свойства проверки, что и текстовые вводы. (И как примечание - вы никогда не должны полагаться исключительно на валидацию Materialise - это действительно только для UX / эстетики). Materialise фактически скрывает собственный выбор и заменяет его текстовым вводом и выпадающим списком.
Хак:
Чтобы сделать выбор вести себя как традиционный ввод текста, мы можем используйте jQuery для манипулирования dom и вставьте вспомогательное поле проверки (взято из текстового ввода документация - запомните, ввод текста поддерживает проверку):
// Create your validation helper text
var validationMessage = '<span class="helper-text" data-error="Please choose an option"></span>';
// Place it in the dom
$('.select-wrapper input').after(validationMessage);
Далее, logi c. Я заменил ваш ввод [type = submit] стандартной кнопкой - это так, чтобы мы могли выполнять нашу логику c и отправлять форму только тогда, когда мы будем довольны. Когда выбирается опция выбора (в данном случае это раскрывающийся список li), класс lipped добавляется в li. Таким образом, после нажатия кнопки отправки мы проверяем внутри выпадающего списка любые ли (которые не являются отключенной опцией-заполнителем), у которых есть выбранный класс, а если нет - то мы добавляем недопустимый класс в динамически создаваемый текстовый ввод .
// Get the dynamically created text input
var select = jQuery('.select-wrapper input')[0];
// Check if any of the dropdown options have a class of selected
$('.submit-btn').on('click',function(){
if ( jQuery('ul.select-dropdown li:not(.disabled).selected').length < 1 ) {
$(select).addClass('invalid');
}
});
Codepen здесь . Вы должны всегда выполнять более строгую проверку и проверку ваших форм, особенно если ввод идет в базу данных.