2011-01-06 13 views
1

ist es möglich, eine JS-Validierungsfunktion für CompareValidator hinzuzufügen?
Ich kann keinen CustomValidator verwenden.JS-Validierung auf CompareValidator hinzufügen

+0

Sie möchten welche Werte vergleichen? –

+0

Ich möchte Daten vergleichen, aber da die Anwendung verschiedene Datumsformate verarbeiten kann, funktioniert der comparevalidator nicht richtig. also ich denke, wenn ich meine eigene Validierungsfunktion erstellen könnte, wäre es viel besser. Ich übergebe derzeit BaseValidator, um mein Problem zu lösen, aber mit dieser Lösung sollte ich auf jede Seite zurückkehren und die Validatoren umbenennen. – scatman

+0

Warum können Sie keinen CustomValidator verwenden? Das könnte uns helfen, Ihnen besser zu helfen. – jcolebrand

Antwort

0

Ich bin nicht sicher, ob Sie brauchen es noch oder nicht, ich gehe davon jedoch nicht, da diese unbeantwortet ist ...

Nun, man kann es nicht direkt tun, aber Sie können ursprüngliche Funktion verbergen was verantwortlich für CompareValidator Validierung und Einführung neuer. Dies ist möglich, weil alle Validierungsfunktionen von ASP.NET in globalem Umfang stammen, was ... umstritten ist, aber in diesem Fall hilfreich ist.

Hier finden Sie die folgenden Module, die die Arbeit erledigen. Es macht zwei Methoden verfügbar. Zuerst aufgerufen addFunction können Sie eine oder mehrere Funktionen für die benutzerdefinierte Überprüfung hinzufügen. Diese Funktion sollte kehrt Boolean und verbraucht drei Parameter Validator Objekt, Target und CompareObject sind. Zweite genannt disableOldFunction ermöglicht es Ihnen, vollständig alte Validierungsfunktion loszuwerden, die vom Modul aufgerufen wird, wenn alle Ihre Funktionen gültig sind.

var MyModules = {}; 
    MyModules.CompareValExtension = function() 
    { 
     var functions = new Array(); 
     var oldFunc = null, disabled = false; 

     function myCompareValidatorEvaluateIsValid(val) 
     { 
      var valid = true; 
      if (oldFunc && functions.length) 
      { 
       for (i in functions) 
       { 
        valid = functions[i](val, document.getElementById(val.controltovalidate), document.getElementById(val.controltocompare)); 
        if (!valid) { break; } 
       } 
       if (!disabled && valid) 
       { 
        valid = oldFunc(val); 
       } 
      } 
      return valid; 
     } 

     if (typeof CompareValidatorEvaluateIsValid != 'undefined') 
     { 
      oldFunc = CompareValidatorEvaluateIsValid; 
      window.CompareValidatorEvaluateIsValid = myCompareValidatorEvaluateIsValid; 
     } 

     var me = {}; 
     me.addFunction = function (func) { if (typeof func == "function") { functions.push(func); } } 
     me.disableOldFunction = function() { disabled = true; } 
     return me; 
    }(); 

Beispiel Nutzung:

MyModules.CompareValExtension.addFunction(function (val, elem, comp) 
    { 
     return elem.value == "my value"; 
    }); 
    MyModules.CompareValExtension.disableOldFunction(); 

Caveat: Bitte legen Sie dieses Modul irgendwo auf der Seite unten sicher sein, dass Standard-Validierungsskripts bereits vorhanden sind. Sie können das Modul auch etwas umschreiben, um die Initialisierung zu verzögern, bis das Dokument fertig ist.

+0

genau was ich getan habe. – scatman

Verwandte Themen