代码之家  ›  专栏  ›  技术社区  ›  fearofawhackplanet

javascriptOO问题-在c#对象中指定私有成员函数?

  •  0
  • fearofawhackplanet  · 技术社区  · 16 年前

    public class NumericTextBox : TextBox
    {
        ...
        string clientScript = "function isValid() { return isNumericValue(this.value); }"; 
        AttachValidationFunction(clientScript);
    }
    
    public class EmailTextBox : TextBox
    {
        ...
        string clientScript = "function isValid() { return isEmail(this.value); }"; 
        AttachValidationFunction(clientScript);
    } 
    

    然后在页面中使用以下javascript函数

    function isFormValid() {
        var controls = getElementsByClass("validatingControl");
        ...
        if (!controls[i].isValid()) return false;
        ...
    }
    

    1 回复  |  直到 16 年前
        1
  •  1
  •   David Hedlund    16 年前

    我要做的是确保AttachValidationFunction收到 this.ClientID Dictionary<String, String> )在渲染时,用所有添加的控件数组注册一个javascript块,结果如下:

    <script type="text/javascript">
    var controlsToValidate = [
       { id: 'ctl00_txtNumeric', validate: function(e) { return isNumeric(e.value); } },
       { id: 'ctl00_txtEmail', validate: function(e) { return isEmail(e.value); } }
    ];
    </script>
    

    然后你可以像这样迭代这个数组:

    <script type="text/javascript">
    function isFormValid() {
       for(var i = 0; i < controlsToValidate.length; i++) {
          var control = controlsToValidate[i];
          var field = document.getElementById(control.id);
    
          if(!control.validate(field))
             return false;
       }
    
       return true;
    }
    </script>
    

    我希望这很清楚。