0

呼び出された関数で現在の ASP テキスト ボックスの ID を取得するにはどうすればよいですか?

<script type="text/javascript">

    $(document).ready(function () {
        $("#<%=txtNumeric.ClientID %>").focusout(function () {
            var textvalue = $("#<%=txtNumeric.ClientID %>").val();
            if (!validateDecimal(textvalue))
                return false;
            else {
                $(this).removeClass("focus");
                return true;
            }
        });
    });

    function validateDecimal(value) {
        var RE = new RegExp(/^\d\d*\.\d\d$/);
        if (RE.test(value)) {
            return true;
        } else {
            alert("Please Enter in XX.XX format !");
            $(this).addClass("focus");// this keyword is not working here !!
            $(this).focus(); // this keyword is not working here !!
            return false;
        }
    }
</script>
4

2 に答える 2

0

このような機能でも制御オブジェクトを渡します

$(document).ready(function () {
        $("#<%=txtNumeric.ClientID %>").focusout(function () {
            var textvalue = $("#<%=txtNumeric.ClientID %>").val();
            if (!validateDecimal(textvalue,this))
                return false;
            else {
                $(this).removeClass("focus");
                return true;
            }
        });

    });

    function validateDecimal(value,ControlObject) {
            var RE = new RegExp(/^\d\d*\.\d\d$/);
            if (RE.test(value)) {
                return true;
            } else {
                alert("Please Enter in XX.XX format !");
                $(ControlObject).addClass("focus");// this keyword is not working here !!
                $(ControlObject).focus(); // this keyword is not working here !!
                return false;
            }
        }
于 2012-11-19T07:38:07.027 に答える
0

パラメータとしてvalidateDecimalに渡さないのはなぜですか、例えば-

function validateDecimal(value, textbox) {
    var RE = new RegExp(/^\d\d*\.\d\d$/);
    if (RE.test(value)) {
        return true;
    } else {
        alert("Please Enter in XX.XX format !");
        textbox.addClass("focus");
        textbox.focus();
        return false;
    }
}

そうは言っても、validateDecimal にはテキストボックスを変更するロジックが必要だとは思いません。その理由は、各関数は 1 つのことだけを行う必要があり、validateDecimal は検証のみを行い、true/false を返す必要があるためです。テキスト ボックス クラスなどを変更するロジックは、validateDecimal 以外の別の関数にある必要があります。

于 2012-11-19T07:41:01.470 に答える