1

10進数の検証に次の関数を使用します.テキストボックスには数字と.(ドット)記号のみを入力できます.IEとChromeで正常に機能していました.私の問題は、イベントが定義されていないエラーが発生することです.これを解決するには?多くのテキストボックスの検証があります。だから私は小数の検証を一般的なものとして作成します。

//Call the Function
                             $('.decimalValidate').live('keypress',function(){
                                  var decimalid=$(this).attr("id");
                                  var decimalval=$('#'+decimalid).val();
                                  var decimalvalidate=ApplyDecimalFilter(decimalval);
                                  if(decimalvalidate == false)
                                  return false;
                             });

//Decimal 検証用の関数。1 つのみを許可します。symbol.everything は IE と Chrome で正常に動作します

function ApplyDecimalFilter(id)
    {
        try {
              return NewDecimalFilter(id, event);

        } catch (e) {
            alert(e.message);
        }
    }

function NewDecimalFilter(o, event) {

        if (event.keyCode > 47 && event.keyCode < 58) {
            return true;
        }
        if ((event.keyCode == 8 || event.keyCode == 46) && o.indexOf('.') == -1)  {
            return true;
        }
        return false;
    }

そして、この decimalValidate クラスをテキスト ボックスで次のように使用します。

input type="text" id="InputLoanAmount" class="decimalValidate" style="width:100px"
4

1 に答える 1

5

Firefoxでは、eventグローバルではありません。window.eventですundefined。イベントをパラメータとして渡す必要があります。ちなみに、jQuery> = 1.7を使用する場合は、.on代わりにを使用する必要があります。.live

$('.decimalValidate').live('keypress', function (e) {
    var decimalid = $(this).attr("id");
    var decimalval = $('#' + decimalid).val();
    var decimalvalidate = ApplyDecimalFilter(decimalval, e);
    if (decimalvalidate == false) return false;
});

function ApplyDecimalFilter(id, event) {
    try {
        return NewDecimalFilter(id, event);

    } catch (e) {
        alert(e.message);
    }
}

ライブデモ

于 2012-06-29T05:01:23.570 に答える