1

たとえば、「0000000」を に入力する<intbox>と、一部のデフォルト バリデータが「0000000 ではなく整数を指定する必要があります」というエラー ツールチップを表示します。そのメッセージを完全に取り除き、入力の値を「0」に変更したいだけです。どんな助けでも素晴らしいでしょう...

4

2 に答える 2

1

org.zkoss.zul.Intbox#coerceFromStringカスタム サブクラス(この例で使用されている名前) でオーバーライドしIntboxCustomSubclass、カスタム コンポーネントとしてアプリケーションに追加lang.xmlできます。カスタム コンポーネントについては、http://books.zkoss.org/wiki/ZK_Client-side_Reference/Language_Definitionを参照してください。

<component>
  <component-name>intbox</component-name>
  <component-class>org.zkoss.zul.IntboxCustomSubclass</component-class>
  <widget-class>zul.inp.Intbox</widget-class>
  <mold>
    <mold-name>default</mold-name>
    <mold-uri>mold/input.js</mold-uri>
    <css-uri>css/input.css.dsp</css-uri>
  </mold>
  <mold>
    <mold-name>rounded</mold-name>
    <mold-uri>mold/input.js</mold-uri>
    <css-uri>css/input.css.dsp</css-uri>
  </mold>
</component>

「0000000」のような値を持つ文字列のテストをここに置き、0 を返します。

// here.
try {
  int v = Integer.parseInt(val);
  int divscale = vals[1] != null ? ((Integer)vals[1]).intValue(): 0;
  while (v != 0 && --divscale >= 0)
    v /= 10;
  return new Integer(v);
} catch (NumberFormatException ex) {
  throw showCustomError(
    new WrongValueException(this, MZul.NUMBER_REQUIRED, value));
}
于 2012-05-16T09:30:02.897 に答える
0

ウィジェットのデフォルトshowError_メソッドをオーバーライドすることで解決策を見つけました。エラーメッセージが作成される場所です...今は次のようになっています

zk.$package("foo").MyIntbox = zk.$extends(zul.inp.Intbox, {
    $init: function() {   
        this.$super('$init', arguments);
        // some custom logic
    },
    showError_ : function(msg){
        console.log(msg);
    }
});
于 2012-05-18T12:55:27.287 に答える