Formatting Wicket textfield焦点上的货币格式设置

Formatting Wicket textfield焦点上的货币格式设置,formatting,wicket,textfield,Formatting,Wicket,Textfield,格式化Wicket文本字段的最佳实践是什么?例如,我希望货币字段有一个符号和一个逗号。我已经通过使用IConverter实现创建了一个解决方案,它可以正常工作。但是,我对专注的行为并不满意。我希望在焦点上删除格式设置。我怎样才能做到这一点 为此使用jQuery插件。我不会在维克特这样做。看看谷歌的“jquery数字格式插件”之类的东西。举几个例子: 请注意,此插件可能会干扰组件中使用的ajaxBehavior。只需尝试一些,看看哪一个适合您的需要。您可以创建一个自定义行为: public c

格式化Wicket文本字段的最佳实践是什么?例如,我希望货币字段有一个符号和一个逗号。我已经通过使用IConverter实现创建了一个解决方案,它可以正常工作。但是,我对专注的行为并不满意。我希望在焦点上删除格式设置。我怎样才能做到这一点

为此使用jQuery插件。我不会在维克特这样做。看看谷歌的“jquery数字格式插件”之类的东西。举几个例子:


请注意,此插件可能会干扰组件中使用的
ajaxBehavior
。只需尝试一些,看看哪一个适合您的需要。

您可以创建一个自定义行为:

public class CurrencyFormattingBehavior extends Behavior{
private static final long serialVersionUID = -4754030237711643182L;

private final String format;

public CurrencyFormattingBehavior(final String format){
    this.format = format;
}

@Override
public void renderHead(Component component, IHeaderResponse response) {
    super.renderHead(component, response);
    String script = "var currencyInputField = $('#"+component.getMarkupId()+"');"
            + "currencyInputField.on('focus', function(){"
            + "currencyInputField.val(currencyInputField.val().replace('"+format+"', ''));"
            + "});"
            + "currencyInputField.on('blur', function(){"
            + "currencyInputField.val(currencyInputField.val() + '"+format+"')"
            + "});";

    response.render(OnDomReadyHeaderItem.forScript(script));
  }
}
然后将其用于任何文本字段:

public class HomePage extends WebPage {

private final String testString = "";
  public HomePage(final PageParameters parameters) {
    super(parameters);
    TextField<String> textField = new TextField<String>("text", new PropertyModel<String>(this, "testString"));
    add(textField);
    textField.add(new CurrencyFormattingBehavior(" €"));
  }
}
公共类主页扩展网页{
私有最终字符串testString=“”;
公共主页(最终页面参数){
超级(参数);
TextField TextField=newtextfield(“text”,newpropertyModel(这是“testString”));
添加(文本字段);
textField.add(新的CurrencyFormattingBehavior(€));
}
}
但这只是一个非常简单的例子。对于更高级的格式,我建议使用正则表达式