2011-01-04 4 views
3

현재 텍스트 상자에 입력 된 숫자가 1.25 또는 1.5로 나뉘어 있는지 확인하려고합니다. 날씨를 1.25 또는 1.5로 수정하는 방법은 다른 드롭 다운 목록의 내용에 따라 다릅니다. 예를 들어, DDL의 선택된 인덱스가 1 인 경우 I mod는 1.5이며, 2 인 경우 I mod는 1.25입니다.동적 오류 메시지가 포함 된 사용자 지정 검사기

그러나 사용자에게 오류가 표시되는 이유를 표시해야합니다. 사용자 정의 유효성 검사기의 오류 메시지는 "숫자가 1.25로 표시되어야합니다"또는 그 반대가 될 수 있어야합니다.

코드가 제대로 작동하는지 확인하십시오. 그러나 그렇지 않습니다. 다른 포럼에서 소스를 가져 와서 innerText를 오류 메시지로 만들어 트릭을해야한다고 읽었습니다. 하지만 어딘가에서 뭔가 잘못하고있을거야. 내 자바 스크립트 기능을 통해 단계 때 완벽하게 단계. 오류 메시지가 없습니다.

<asp:CustomValidator ID="ValidateFinHeight" runat="server" CssClass="NormLabel" 
Display="Dynamic" 
ControlToValidate="txtFinHeight" 
ClientValidationFunction="validateFinHeight"></asp:CustomValidator> 

<script type="text/javascript" language="javascript" > 
function validateFinHeight(source, arguments) 
{ 
    var ddl = document.getElementById('cboTubeDia'); 
    var ddlSelIndex = ddl.selectedIndex 

    switch(ddlSelIndex) 
    { 
    case 0: 
     arguments.isValid = true; 
     return;  
    case 1: 
     if(arguments.value%1.25 != 0) 
     { 
      source.innerText = "Height must be divisibly by 1.25"; 
      arguments.isValid = false; 
      return; 
     } 
     else 
     { 
      arguments.isValid = true; 
      return; 
     } 
    case 2: 
     if(arguments.value%1.5 != 0) 
     { 
      source.innerText = "Height must be divisibly by 1.5"; 
      arguments.isValid = false; 
      return; 
     } 
     else 
     { 
      arguments.isValid = true; 
      return; 
     } 
    } 
} 
</script> 
+0

selectedindex가 2이고 selectedindex가 1 인 경우 숫자가 1.25이지만 자바 스크립트 함수에서는 유효성을 검사합니다. 귀하의 질문에 대한 대답은 중요하지 않습니다. –

답변

5

는 대소 문자 구분 (. f.e IsValidValue)에 따라 자바 스크립트 기능에 몇 가지 사소한 실수가 있었다 : 여기 내 코드입니다. 나는 그것이 설정해야만하는 Error-Span의 속성을보기 위해 그것을 디버깅했다. Firefox의 경우 textContent 속성이고 IE의 경우 innerText입니다.

작업 기능 (수 크로스 브라우저) :

function validateFinHeight(source, args) { 
     var ddl = document.getElementById('cboTubeDia'); 
     var ddlSelIndex = ddl.selectedIndex; 
     var errorMsg = ""; 

     switch (ddlSelIndex) { 
      case 0: 
       args.IsValid = true; 
       return; 
      case 1: 
       if (args.Value % 1.25 != 0) { 
        errorMsg = "Height must be divisibly by 1.25"; 
        if (source.innerText) { 
         source.innerText = errorMsg; 
        } else { 
         source.textContent = errorMsg; 
        } 
        args.IsValid = false; 
        return; 
       } 
       else { 
        args.IsValid = true; 
        return; 
       } 
      case 2: 
       if (args.Value % 1.5 != 0) { 
        errorMsg = "Height must be divisibly by 1.5"; 
        if (source.innerText) { 
         source.innerText = errorMsg; 
        } else { 
         source.textContent = errorMsg; 
        } 
        args.IsValid = false; 
        return; 
       } 
       else { 
        args.IsValid = true; 
        return; 
       } 
     } 
    } 
+3

대단히 감사합니다! – Johnrad

+0

jQuery에서 크로스 브라우저 문제를 해결하지 않는 이유는 무엇입니까? 그냥 $ (src) – KMX

4

죄송합니다, 게스트로 다른 답변을 말씀 드릴 수 없습니다. 질문뿐만 아니라 팀의 질문에 대한 답변을 말씀 드리고 싶습니다.

'arguments'를 매개 변수 이름으로 사용하면 문제가 될 수 있습니다. (적어도 나는 Firefox 20에서이 점을 경험했습니다.) 함수에 전달되는 모든 인수를 포함하는 자동 변수입니다. 따라서 매개 변수의 이름이 같은 경우 이름 충돌이 발생합니다. 매개 변수 이름을 'args'또는 다른 것으로 변경하는 것이 좋습니다.

+1

+1 사용하십시오 그에 따라 내 대답을 편집했습니다. 감사. –

관련 문제