0

MVC ビューに、文字 Y または N のみを入力できるようにしたい入力フィールドがいくつかあります。

Firefox (現在のバージョンは 23.0.1) を使用してこれらのフィールドにタブで移動すると、フィールドの値が強調表示され、許可された文字を入力して、基本的に値を上書きできます。たとえば、入力の値が N の場合、N が強調表示され、Y を押すと N が Y に置き換えられます。

ただし、Chrome または IE(10) を使用すると、フィールドが強調表示されますが、許容されるキーは入力ボックスの値を上書きしません。フィールドの強調表示が解除され、カーソルが値の末尾に配置されます。ブー!

私は何が欠けていますか?

//Keydown and blur events for textboxes that only allow Y, or N
$(".onlyYN").keydown(function (e) {
    if (e.keyCode === 89 ||
        e.keyCode === 8 ||
        e.keyCode === 9 ||
        e.keyCode === 78 ||
        e.keyCode === 13 ||
        e.keyCode === 46 ||
        e.keyCode === 16) {
        clearError(this);
        setControlValueToUpperCase(this);
        return;
    }
    markControlAsWarning(this);
    alertify.log("The " + $(this).attr('id') + " field only accepts the single characters 'Y' or 'N'");
    e.preventDefault();
}).blur(function () {
    if ($(this).val().toUpperCase() !== "Y" && $(this).val().toUpperCase() !== "N") {
        markControlAsError(this);
        alertify.error("The " + $(this).attr('id') + " field only accepts the single characters 'Y' or 'N'");
        return;
    }
    clearError(this);
    setControlValueToUpperCase(this);
});
4

1 に答える 1

0

さて、setControlValueToUpperCase() メソッドを使用するのが早すぎたようです。したがって、キーダウンを最初に if ステートメントに変更する

if (e.keyCode === 89 ||
        e.keyCode === 8 ||
        e.keyCode === 9 ||
        e.keyCode === 78 ||
        e.keyCode === 13 ||
        e.keyCode === 46 ||
        e.keyCode === 16) {
        clearError(this);
        return;
    }

私の問題を修正しました。

function setControlValueToUpperCase(ctrl) {
    /// <summary>
    ///     Set the contents of the control value to upper case
    /// </summary>
    /// <param name="ctrl">The control reference which contains value</param>
    $(ctrl).val($(ctrl).val().toUpperCase());
}

ホーレイミー!!

于 2013-08-28T15:57:35.993 に答える