2010-06-15 2 views
1

AJAX (UpdatePanels)를 사용하여 .Net에서 다중 페이지 양식을 작성 중입니다. 기본적으로 빨간색으로 강조 표시 할 수없는 텍스트 상자에 클래스가 추가되도록 노력하고 있습니다. 오직 IE에서 완벽하게 작동.Net Validators를 사용하여 텍스트 상자에 클래스를 추가 할 때

$("span.invalid").bind("DOMAttrModified propertychange", function (e) { 
    // Exit early if IE because it throws this event lots more 
    if (e.originalEvent.propertyName && e.originalEvent.propertyName != "isvalid") return; 

    var controlToValidate = $("#" + this.controltovalidate); 
    var validators = controlToValidate.attr("Validators"); 
    if (validators == null) return; 

    var isValid = true; 
    $(validators).each(function() { 
     if (this.isvalid !== true) { 
      isValid = false; 
     } 
    }); 

    if (isValid) { 
     controlToValidate.removeClass("invalid"); 
    } else { 
     controlToValidate.addClass("invalid"); 
    } 
}); 

:

은이 코드를 사용하여 샘플 온라인을 발견했다. Firefox에서 어떤 이유로이 코드가 실행되지 않습니다. 나는 DOMAttrModified 이벤트를 살펴 보았고 파이어 폭스에서 작동해야하는 것처럼 들린다. 따라서 코드에있다. 나는 그것이 작동하지 않기 때문에 무언가를 놓치고 있어야합니다.

나는 누군가가 좋은 무언가를 가지고 있다면 여기에서 성취하려고하는 것을 위해 다른 해결책을 열어두고 있습니다. 기본적으로 양식은 현재 3 페이지입니다. 페이지 1에는 유효성 검사가 필요한 여러 필드가 있습니다. 확인란을 기준으로 5 개 또는 13 개 필드가 될 수 있습니다. 페이지 2에는 별도로 유효성을 검사해야하는 다른 필드 집합이 있습니다. 분명히 1 페이지에있을 때 페이지 2의 유효성 검사를해서는 안되며 그 반대의 경우도 마찬가지입니다.

내가 가지고있는 코드를 수정하거나 도움이 필요한 경우 도움을 구하십시오. 당신을 위해

답변

0

이 제안 ..

1) 당신은 검증보다는 대해서 PropertyChange를 트리거하는 텍스트 상자의 onchange를 이벤트를 사용하여 생각 해 봤나

? 아래 코드와 비슷한 것을 사용하여이 작업을 수행 할 수 있어야합니다.

// Get the textbox element 
var target = document.getElementById('textBox1'); 

// Fire the onchange event 
if(target.fireEvent) 
{ 
    // IE 
    target.fireEvent('onchange'); 
} 
else if(document.createEvent) 
{ 
    // Firefox 
    var ffEvent = document.createEvent('HTMLEvents'); 
    ffEvent.initEvent('change', true, true); 
    target.dispatchEvent(ffEvent); 
} 

퍼트 할 가치가 있지만 가치가 없을 수 있습니다.

2) 다른 이벤트를 시도 할 수 있습니다. 지원되는 문서는 여기에 문서화되어 있습니다. http://bit.ly/cc6Wdc

행운을 빌어 요!

+0

propertychange 이벤트에서 유효성 검사 자체를 수행하지 않습니다. .Net 검사기는 버튼 클릭만으로 그 작업을 수행합니다 (실제로 클릭 이벤트가 발생하기 전에 코드를 현명하게 실행한다고 생각합니다). 게시 한 코드는 유효성 검사기 자체에 연결하기위한 것이고 span 태그로 출력되지만 display : none;으로 설정됩니다. 해당 태그에 속성 변경이 있으면 자바 스크립트가 실행되고 클래스가 유효성 검사자가 아닌 유효성 검사기 자체에 적용되어야합니다. 필자가 생각하는 문제는 바로 FF에서, 디스플레이 : none; 결코 바뀌지 않는다. IE에서는 그렇습니다. 그 이유는 확실하지 않습니다. – CoreyT

관련 문제