javascript - jquery enmascara el plugin de entrada para no borrar el campo cuando tiene errores
jquery object (7)
Además de eliminar el input.val ("") en checkVal (), también puede cambiar la llamada a clearBuffer. En el código original es: clearBuffer (0, len); eliminando todas las entradas del usuario. si cambia esto a clearBuffer (lastMatch + 1, len); se mostrará la entrada del usuario, seguido de los marcadores de posición de la máscara que aún se necesitan para completar la entrada correcta.
También agregué un mensaje de usuario en .bind. Esto funciona para nosotros, ya que estamos utilizando el MaskedInput para exactamente un tipo de entrada. Estoy buscando cualquier entrada que vaya más allá de la posición 7, porque ahí es donde comienza la entrada del usuario.
Aquí esta lo que hice:
.bind("blur.mask", function() {
// find out at which position the checkVal took place
var pos = checkVal();
// if there was no input, ignore
if (pos <=7) {input.val(""); clearBuffer(0, len);}
// if the user started to input something, which is not complete, issue an alert
if (pos > 7 && pos < partialPosition) alert("Tell the user what he needs to do.");
if (input.val() != focusText)
input.change();
})
Estoy buscando en http://digitalbush.com/projects/masked-input-plugin/
Lo estoy llamando así:
$(control).mask(''999-999-9999'');
Y no quiero que descarte la entrada de los usuarios si algo está mal, por ejemplo, no han terminado
[407-555-____]
Si deja el campo después de haber escrito tanto, se borra. Me gustaría dejarlo para que puedan terminar más tarde.
Soy nuevo en jQuery, y he revisado su fuente, pero no puedo encontrar ninguna forma de hacerlo, ni puedo encontrar la manera de editarlo para lograr lo que quiero, porque el código es arcano para mi ojos
Agregar Placeholder podría resolver el problema.
$(control).mask(''999-999-9999'');
Añadir un marcador de posición vacío en la máscara. vea abajo
$(control).mask(''999-999-9999'', { placeholder: "" });
que reemplazaría a _ en el campo de texto de entrada por defecto. por lo que no se dejaría ningún _ si la longitud de entrada es dinámica y no está fija.
Buscando en el script de pluging el método de desenmascarar.
$(''#checkbox'').unmask();
Debería eliminar la entrada input.val("");
en la función checkVal()
para una solución adecuada.
Si está utilizando la versión minificada, debe buscar y eliminar la declaración:
if(!a&&c+1<i)f.val(""),t(0,k);else
Establecer la opción autoclear en falso.
$(control).mask(''999-999-9999'', {autoclear: false});
Intente actualizar el archivo jquery.maskedinput.js
En la función, la función checkVal (permitir) establecer el parámetro permitir en verdadero. Su ayuda para mí.
function checkVal(allow) {
allow = true; ///add this command
//..............
}
Parece que debería simplemente hacer toda la máscara opcional:
mask(''?999-999-9999'')
De esa manera, el control piensa que lo que el usuario tiene es "válido" y puedo continuar. Aunque no es realmente la parte opcional de la máscara.