Quiero verificar un valor después de que un usuario terminó de completar el campo de entrada con una lista de valores aceptados. Estoy usando autocompletar. El problema al que me enfrento es que
Once
vez que el usuario terminó de ingresar el valor. En este punto, mi función evalúa que el valor ingresado no está permitido. Luego, una vez que el autocompletado cambia el valor al valor seleccionado por el usuario, mi función de verificación se activa nuevamente y ahora el valor ingresado se reconoce como correcto.Por supuesto, este no es el comportamiento correcto de mi aplicación. Necesito verificar el valor en ambos casos cuando se escribe o cuando se usa autocompletar. El campo de entrada es parte de un formulario, por lo que puedo evaluarlo después de enviarlo, pero el formulario es bastante complejo y quiero que el usuario sepa que el valor NO se acepta de inmediato.
Trabajando jsFiddle .
codigo javascript
var elemOptions = { data: { "Radek Surname ": null, "Radek": null, "Radoslav": null }, minLength : 2, } var elemAutomplete = document.getElementById('autocomplete-input1') var autocomplete = M.Autocomplete.init(elemAutomplete, elemOptions); var names = { "Radek": null, "Radoslav":null} function checkName(){ var result = false var name = document.getElementById("autocomplete-input1") console.log(name.value.trim()) console.log(!(name.value.trim() in names)) if (!(name.value.trim() in names) ){ var errorText = "accepting values from autocoplete only" name.value = "" result = false console.log(errorText) }else{ result = true } return result }
Si escribe Rade y luego selecciona Radek de autocompletar, obtendrá
"Rade" true "accepting values from autocoplete only" "Radek" false