0

まず、ページの読み込み時に、デフォルトの透かしを次のように設定します。

function AddWatermarksDataEntry() {
    initialWatermarks = new Array();
    initialWatermarks.push(new Array("P1_BIRTHDATE_MASK", "__/__/____"));
    initialWatermarks.push(new Array("P2_BIRTHDATE_MASK", "__/__/____"));
    initialWatermarks.push(new Array("P1_VALIDFROM_MASK", "~#SF_DD/MM/YYYY~"));
    initialWatermarks.push(new Array("P2_VALIDFROM_MASK", "~#SF_DD/MM/YYYY~"));
    initialWatermarks.push(new Array("P1_IDENTITYDOCUMENTNUMBER", " "));
    initialWatermarks.push(new Array("P2_IDENTITYDOCUMENTNUMBER", " ")); //***-*******-**
    initialWatermarks.push(new Array("P1_VAT", "~#SF_9OR10_DIGIT~"));
    initialWatermarks.push(new Array("P2_VAT", "~#SF_9OR10_DIGIT~"));
    Watermarker(initialWatermarks);
}

後で、身分証明書の種類のドロップダウン値を調整するときは、次のようにします。

if(newIdentityDocumentType == "1")
            {
                ChangeIdentityDocumentNumberField($('#'+ whichPerson +'_IDENTITYDOCUMENTNUMBER'), $('#'+ whichPerson +'_NATIONALITY'), watermarkIdentityDocumentNumberBelgian, foreignPersonWaterMark, 14, 14);
                $('#'+ whichPerson +'_IDENTITYDOCUMENTNUMBER').mask('999-9999999-99');
                $('.'+ whichPerson + '.identityDocumentNumber').text('e.g. 123-456789112-34');
            }

ユーザーが正しい身分証明書の種類を選択したかどうかを確認します。もしそうなら、入力フィールドのプロパティを変更してください。具体的には、透かしを調整してほしいです。

ChangeidentityDocumentField メソッドは、透かしを次のように変更するメソッドを呼び出します。

function ChangeIdentityDocumentNumberField(IdentityDocumentNumberField, NationalityField, WatermarkBelgian, WatermarkForeign, MaximumBelgian, MaximumForeign) {
    if (NationalityField.val() == "0") {
        //omitted code
        ChangeWatermark(IdentityDocumentNumberField, WatermarkBelgian);
    } else {
        //omitted code
        ChangeWatermark(IdentityDocumentNumberField, WatermarkForeign);
    }
}

function Watermarker(newWatermark) {
for (i = 0; i < newWatermark.length; i++) {
    $('#' + newWatermark[i][0]).Watermark(newWatermark[i][1]);

    $('#' + newWatermark[i][0]).blur(function (item, watermark) {
        return function () {
            //if ($('#' + item).val() == '') {
                $('#' + item).Watermark(watermark);

            //};
        };
    } (newWatermark[i][0], newWatermark[i][1]));
};

}

この方法では、問題は、入力フィールドにいて外出したいときに、上記の関数が呼び出され、すべてがうまくいき、透かしが追加されていることがわかります(デバッグ中ですが、その後、突然、コードが次の場所にジャンプすると:

} (newWatermark[i][0], newWatermark[i][1]));

ウォーターマークがデフォルト値にリセットされました!?

4

1 に答える 1

0

上記のコードを削除し、プレースホルダーに置き換えることでこれを解決しました。しかし、これが原因で新しい問題に遭遇しました: Change placeholder text with jquery also auto-update in IE

于 2013-06-03T18:48:32.840 に答える