もう別の方向に行ってしまってますが、とりあえず入力中に変化するようにしてみました。
ただ、理論から場合を網羅的に作った訳ではないので、格納ミスが起きない自信はありません。
普通の入力(複数変更やペーストも)には対応してます。
var fieldStock = new String();
Field.onChanged = getMaskedWithDots;
function getMaskedWithDots()
{
var caret = Selection.getCaretIndex();
//文字列数の変化
var differ = this.text.length-fieldStock.length;
//追加/変更された文字列
var changed = new String();
for(var n=0; n<this.text.length; n++) if(this.text.charAt(n)!="●") changed += this.text.charAt(n);
//適用
fieldStock = fieldStock.substr(0,caret-changed.length) + changed + fieldStock.substr(caret-differ);
//マスク
this.text = "";
while(this.text.length<fieldStock.length)
{
this.text += "●";
}
Selection.setSelection(caret, caret);
}
引用:
1バイト文字だけだと、完璧な動作の再現は出来ないですよね