Hi Vaadin experts,
We use vaadin 8.1 version and created a simple input mask with javascript extension for the TextField.
The mask show correctly but if typeing something in the TextField it is not send the changes to the server side I don’t no why.
The javascript lib: https://www.npmjs.com/package/jquery.inputmask
connector.js
like this:
window.org_vaadin_textfieldformatter_SimpleNumberFormatter = function () {
console.info("Start org_vaadin_textfieldformatter_SimpleNumberFormatter");
try {
var im;
var el = this.getElement(this.getParentId());
var connector = this;
im = new Inputmask(connector.getState().mask);
im.mask(el);
// Pass user interaction to the server-side
var connector = this;
im.onclick = function () {
connector.onClick(im.getValue());
};
} catch (e) {
console.error(e);
}
console.info("Done");
};
AbstractTextFieldFormatterExtension
class:
[code]
@JavaScript({“jquery-3.2.1.min.js”, “inputmask.js”, “inputmask.regex.extensions.js”, “inputmask.numeric.extensions.js”, “connector.js”})
public abstract class AbstractTextFieldFormatterExtension extends AbstractJavaScriptExtension {
public AbstractTextFieldFormatterExtension(AbstractTextField field) {
extend(field);
}
public String getValue() {
return getState().value;
}
public void setValue(String value) {
getState().value = value;
}
@Override
protected TextFieldFormatterState getState() {
return (TextFieldFormatterState) super.getState();
}
}
[/code]
SimpleNumberFormatter
:
public class SimpleNumberFormatter extends AbstractTextFieldFormatterExtension {
public SimpleNumberFormatter (TextField field, String mask) {
super(field);
setCharacters(mask);
}
private void setCharacters(String mask) {
getState().mask = mask;
}
}
TextFieldFormatterState
:
public class TextFieldFormatterState extends JavaScriptExtensionState {
// Default masking definitions
// 9 : numeric
// a : alphabetical
// * : alphanumeric
public String mask; // pl: 99-9999999
public int repeat;
public String value;
}
Please help me what I wrong.
Richárd