webForumDet fria alternativet

Egen Validator med JS

.NETur .NET

1 svar · 222 visningar · startad av mozilla

mozillaMedlem sedan juli 20011 084 inlägg
#1

Jag vill byta ut validatorernas vanliga felmeddelandena mot bilder istället för text. Jag har därför skapat egna kontroller som ärver från System.Web.UI.WebControls.RegularExpressionValidator. och gör sedan override på Render().

Detta fungerar bra och jag kan byta ut texten mot min bild. Problemet är att den inte tar med javascript-funktionen för validering. Jag har testat fram och tillbaka flera gånger. Jag har hittat lite av en provisorisk lösning genom att använda

base.RegisterValidatorDeclaration();
base.AddAttributesToRender(writer);

Problemet är att AddAttributesToRender även skapar andra attributes som jag inte vill ha (bland annat ForeColor). Jag skulle helt enkelt endast vilja anropa den funktionen som skapar javascriptet istället för att behöva köra hela AddAttributesToRender. Någon som vet hur man gör detta?

Så här skall outputen av javascript se koden ut:

<script type="text/javascript">
<!--
var Validator1= document.all ? document.all["Validator1"] : document.getElementById("Validator1");
Validator1.controltovalidate = "Textbox1";
Validator1.display = "Dynamic";
Validator1.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
Validator1.initialvalue = "";
// -->
</script>
mozillaMedlem sedan juli 20011 084 inlägg
#2

Jag var kanske otydlig eller är det ingen som vet? :OO Jag har kollat på MSDN och hittade bland annat Base Validator Control Sample. Där kan man se att värdena som jag letar efter sätts i AddAttributesToRender() med följande rader:

if (ControlToValidate.Length > 0) {
  writer.AddAttribute("controltovalidate", GetControlRenderID(ControlToValidate));
}
if (ErrorMessage.Length > 0) {
	writer.AddAttribute("errormessage", ErrorMessage, true);
}
ValidatorDisplay display = Display;
if (display != ValidatorDisplay.Static) {
  writer.AddAttribute("display", PropertyConverter.EnumToString(typeof(ValidatorDisplay), display));
}
if (!IsValid) {
  writer.AddAttribute("isvalid", "False");
}
if (disabled) {
  writer.AddAttribute("enabled", "False");
}

Men jag förstår inte riktigt hur det går till? Om jag kopierar detta kommer alla värden direkt på min bild. Och inte i javascript-sektionen som det skall göra.

137 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)