> 웹 프론트엔드 > JS 튜토리얼 > 유효성 검사 컨트롤 및 Button_javascript 기술의 OnClientClick 이벤트에 대한 자세한 분석

유효성 검사 컨트롤 및 Button_javascript 기술의 OnClientClick 이벤트에 대한 자세한 분석

WBOY
풀어 주다: 2016-05-16 17:11:00
원래의
1019명이 탐색했습니다.

1. 이벤트

오랫동안 무시하거나 발견하지 못한 문제입니다.

페이지에 유효성 검사 컨트롤이 있는 경우 Button 컨트롤이 OnClientClick 이벤트를 트리거하고 이 이벤트가 true 및 false를 반환하면 유효성 검사 컨트롤이 유효하지 않게 되어 더 이상 작동하지 않습니다. 구체적인 설명은 다음과 같습니다.

.Net 페이지는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.




< ;div>

ErrorMessage="null일 수 없음" Display="None">ID="ValidatorCalloutExtender1" TargetControlID="RequiredFieldValidator1" runat="server" >





위와 같이 RequireFieldValidator 유효성 검사 컨트롤을 페이지에 추가하여 TextBoxTest의 값이 ButtonText가 페이지를 제출할 때 사용자는 제출이 필요한지 확인해야 합니다. 매우 간단한 페이지이고 문제가 없는 것 같습니다. 그러나 TextBoxTest 값이 비어 있으면 유효성 검사 컨트롤이 작동하지 않고 페이지가 성공적으로 제출됩니다. 그 이유는 무엇입니까?

2. 이벤트 대응

무슨 일이에요? 먼저 ButtonTest의 OnClientClick 이벤트를 제거한 후 확인 제어가 작동했습니다. 왜 이런가요? 페이지의 소스 코드를 확인한 결과 ButtonTest 컨트롤이 다음 소스 코드를 생성한 것으로 나타났습니다.

이 소스 코드 줄에서 볼 수 있듯이 유효성 검사 컨트롤은 클라이언트 측에서 JavaScript 코드 조각을 생성하여 TextBox의 값이 비어 있는지 확인합니다. ButtonTest의 OnClientClick을 추가한 후 소스 코드를 다시 확인해 보니 ButtonTest 컨트롤에서 생성된 소스 코드는 다음과 같습니다.

이 코드 줄에서 문제가 있는 위치를 명확하게 알 수 있습니다. 클라이언트 측에서는 사용자 정의 자바스크립트가 먼저 실행된 다음 유효성 검사 컨트롤에 의해 생성된 자바스크립트가 실행됩니다. 유효성 검사 제어는 의미를 잃습니다.

3. 대응 통제

문제가 어디에 있는지 알면 해결하기가 더 쉬울 것입니다. 내 해결책은 다음과 같습니다. 사용자 정의 자바스크립트를 실행하기 전에(확인('제출하시겠습니까?' 반환)) 페이지에서 컨트롤을 확인합니까? 규칙을 준수하여 ButtonTest의 OnClientClick 이벤트를 다음과 같이 수정했습니다.

코드 복사 코드는 다음과 같습니다. 🎜>


CheckClientValidate() 메서드의 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.



실행하고 테스트하세요. 유효성 검사 제어가 작동합니다. 문제가 해결되었습니다.

4. 추신

이것은 제가 알고 있던 문제이자 해결책입니다. 이 문제를 발견했을 때 저는 식은땀을 흘렸습니다. 다행히도 엄격한 서버측 검증을 수행했습니다. 그렇지 않으면 비참할 것입니다. 여기에서 엄격한 서버 측 확인을 지정하는 것이 얼마나 필요한지 확인할 수도 있습니다. :-). 이는 "해커"가 클라이언트 확인을 우회하는 것을 방지할 뿐만 아니라 스스로 인지하지 못한 오류로 인해 발생하는 데이터 부정확성을 방지합니다.

참고:

Page_ClientValidate(), 이 함수는 Microsoft 유효성 검사 컨트롤이 포함된 aspx 페이지에서 사용자 입력 작업이 적법한지 여부에 따라 True 또는 False를 반환하는 데 사용됩니다

직접 판단할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

if(Page_ClientValidate())
{
true 반환;
}
else
{
false 반환;
}
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿