문제

입력의 OnChange 스크립트를 실행할 수있는 방법 ~ 전에 RangeValidator의 스크립트?

사용자가 달러 사인이나 쉼표로 입력하면 실패한 검증을 방지하고 싶습니다.

function cleanUp(str) {
    re = /^\$|,/g;
    return str.replace(re, ""); // remove "$" and ","
}

<input type="text" id="salary" runat="server"
onchange="this.value=cleanUp(this.value)" />

<asp:RangeValidator ID="salaryValidator" 
    runat="server" ErrorMessage="Invalid Number"
    ControlToValidate="salary" Type="Double" />

업데이트:
범위를 확인하고 통화 Regex를 사용하는 CustomValidator를 사용하기로 결정했습니다. 감사합니다 Michael Kniskern.

function IsCurrency(sender, args) {
    var input = args.Value;

    // Check for currency formatting.
    // Expression is from http://regexlib.com/REDetails.aspx?regexp_id=70
    re = /^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(.[0-9][0-9])?$/;
    isCurrency = input.match(re);

    if (isCurrency) {
        // Convert the string to a number.
        var number = parseFloat(CleanUp(input));
        if (number != NaN) {
            // Check the range.
            var min = 0;
            var max = 1000000;
            if (min <= number && max >= number) {
                // Input is valid.
                args.IsValid = true;
                return;
            }
        }
    }

    // Input is not valid if we reach this point.
    args.IsValid = false;
    return;
}

function CleanUp(number) {
    re = /^\$|,/g;
    return number.replace(re, ""); // remove "$" and ","
}       

<input type="text" id="salary" runat="server" />

<asp:CustomValidator ID="saleryValidator" ControlToValidate="salary" runat="server" 
ErrorMessage="Invalid Number" ClientValidationFunction="IsCurrency" />
도움이 되었습니까?

해결책

CustomerValidator 컨트롤을 사용해 보았고 JS 정리 방법의 기능과 RangeValidator 방법을 결합 했습니까?

다른 팁

나는 그것을 개선 할 수 있다고 생각합니다. 이것은 쉼표와 센트 숫자를 선택적으로 만듭니다.

^\$?([0-9]{1,3},?([0-9]{3},?)*[0-9]{3}|[0-9]+)(\.[0-9]{0,2})?$

스크립트를 등록하여이를 수행하는 방법이 있습니다. 그러나 왜 입력이 적절한 지 확인하기 위해 정규식 검증기를 사용하지 않습니까?

또한 범위 유효성 검사기는 변경되지 않은 Fields Onblur JS 이벤트에서 실행됩니다.

방금 당신은 ''가 있다는 것을 알았습니다. 소수점의 경우, 그러나 그것은 Regex가 그 지점의 모든 캐릭터를 받아 들일 것임을 의미합니다. 당신은 사용해야합니다 \. 그 소수점을 위해.

/^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(\.[0-9][0-9])?$/
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top