우리는 고객의 웹 사이트에 등록 할 수있는 많은 고객이 사용하는 양식을 가지고 있습니다. 양식의 소유자가 양식에 표시되거나 숨겨 지도록 필드를 설정할 수 있으며 또한 필수 항목이기 때문에 사용자 정의 할 수 있습니다. 그러나 표시되는 일부 필드의 경우 양식이 유효하도록 다른 필드를 설정해야합니다. 따라서 유효성 검사는 까다로울 수 있습니다. 다른 까다로운 부분은 모든 오류 메시지가 유효성 검사 요약에 함께 표시되기를 바랍니다. 만약 내가 linkbutton에 대한 onclientclick이라는 자체 함수를 가지고 있다면, 에러 메시지를 검증 요약에 추가 할 수 없다.클라이언트 측 유효성 검사를위한 customvalidator가 작동하지 않습니다.
우리가 원래 발견 한 솔루션은 controltovalidate 속성을 설정하지 않고 페이지에서 사용자 정의 유효성 검사기를 만드는 것이었지만 우리가 호출하길 원하는 함수에 clientvalidationfunction을 설정해 두었습니다. 이로써 우리는 발신자 인수의 오류 메시지를 설정하여 유효성 확인서에 나타나게되었습니다.
추가 검증 로직을 추가해야하는데,이 작업을 수행 할 때 페이지가 더 이상 작동하지 않는다는 것을 깨달았습니다. (이제는 .net 2에서 작동하고 있다고 생각합니다. 이제는 .net 4입니다.)
다음은 기본 html 코드입니다.
웹 페이지 -
<asp:ValidationSummary ID="vsummary" runat="server" HeaderText="Oops, it appears the following required fields are not completed." CssClass="error" />
<asp:CustomValidator ID="cstCustomScripts" runat="server" ClientValidationFunction="ValidateExtraFields" />
...additional form fields here
<asp:LinkButton ID="btnAddUpdate" runat="server" onclick="SubmitProfile" />
그리고 사용자 정의 유효성 검사기에 의해 호출되는 자바 스크립트 ... 과거
function ValidateExtraFields(sender, args) {
args.IsValid = true;
if (typeof window.RelocationSelectionRequired == 'function') {
if (!RelocationSelectionRequired()){
args.IsValid = false;
sender.errormessage = "If you are open to relocating, please select the state(s) and cities.";
return;
}
}
if (typeof window.ValidateHomeState == 'function') {
if (!ValidateHomeState()) {
args.IsValid = false;
sender.errormessage = "Home state is required.";
return;
}
}
if (typeof window.ValidateWorkState == 'function') {
if (!ValidateWorkState()) {
args.IsValid = false;
sender.errormessage = "Work state is required.";
return;
}
}
var invalidNumberField = "";
$("[data-validate-function='GreaterThanZero']").each(function() {
var t = $(this);
if (t.val().trim() == "0") {
args.IsValid = false;
invalidNumberField = t.attr("controlName");
return false;
}
});
if (invalidNumberField.length > 0) {
sender.errormessage = invalidNumberField + " cannot be zero.";
return;
}
}
함수가 성공적으로의 ValidationSummary이 함수에서 메시지를 추가 할 것 양식을 제출하지 않고 통제하십시오. 이제 메시지는 계속 추가되지만 양식을 제출하지 않아도됩니다. 누구든지 이것이 .net 2에서 .net 4로 이동 한 결과인지 알 수 있습니까? 아니면 더 이상 효과가없는 다른 이유가 있습니까? 감사.
이전에는 절대로 필요하지 않았습니다. 페이지에 다른 필수 입력란 중 하나를 비워두면 유효성 검사가 제대로 작동합니다. 양식이 제출되지 않습니다. 킥을 위해서 나는 그것을 시도했지만 아직도 폼을 제출하고 있습니다. –