2009-06-29 7 views
0

ajaxツールキットのValidatorCalloutExtenderを使用して、テキストボックスにエラーメッセージを表示しています。 ValidatorCalloutExtenderは、テキストボックスを検証するRegularExpressionValidatorに拡張されています。私が抱えている問題は、テキストボックスに関連付けられているドロップダウンリスト項目が選択されているかどうかに応じて、ValidationExpressionとErrorMessageを動的に変更する必要があることです。私は正常にクライアント側のイベントとjavascriptを使用してこれを行うことができましたが、私は正しく表示されるErrorMessageを更新するValidatorCalloutExtenderを取得するように見えません。私にもっと混乱させるものは、Firefoxではうまく動作しますが、IEのどのバージョンでも動作するようには思えません。誰かが私のエラーメッセージを動的に変更するように表示される方法を見つけるのを助けることができれば大いに感謝します。動的にajaxツールキットを変更するValidatorCalloutExtender

答えて

3

[OK]をみんな、

私は自分の問題を考え出したし、他の人が私に似て何かをしようとしている場合、私は出てここに私の調査結果を置くかもしれないと思いました。

javascript私は正規表現とエラーメッセージをドロップダウンリストの値に応じて変更する関数に、テキストボックスに結び付けられたregularexpressionvalidatorのオブジェクトを渡しています。ユーザーがドロップダウンリストの値を変更した場合は、バリデーターとajax validatorcalloutがすぐに更新して、テキストボックスの値が有効であったか無効であったが、この新しい理由のためにユーザーに通知します。私はこれがこれを行うための最善の方法だとは言いませんが、これは私のために働く方法であり、私はクライアントでそれをやりたかったのです。以下

は、私が使用しているコードと(valは)に渡されたregularexpressionvalidatorオブジェクトである。

function setSearchRegEx(val) 
{ 
    var regExpression = ""; 
    var valMessage = "Must be in the following format: "; 
    var message = ""; 

    // set regex information depending on what drop down value they select. 
    switch (document.getElementByID('ddlValue1.ClientID').value) { 
     case "Value1": 
      regExpression = "^[a-zA-Z0-9'*\s-]{1,75}$"; 
      message = valMessage + "[A-Z][0-9]'. #-"; 
      break; 
     case "Value2": 
      regExpression = "^\[0-9]{3}-\[0-9]{2}-\[0-9]{4}|\d{9}$"; 
      message = valMessage + "999-99-9999"; 
      break; 
     case "Value3": 
      regExpression = "[a-zA-Z0-9'*\s-]{1,50}$"; 
      message = valMessage + "[A-Z][0-9]'. #-"; 
      break; 
     case "Valu4": 
      regExpression = "^\[0-9]{3}-\[0-9]{3}-\[0-9]{4}$"; 
      message = valMessage + "999-999-9999"; 
      break; 
     case "Value5": 
      regExpression = "^[0-9]{1,10}$"; 
      message = valMessage + "9999999999"; 
      break; 
     default: 
      regExpression = ""; 
      message = ""; 
    } 
    // set validation control values for the new drop down selected. 
    val.validationexpression = regExpression; 
    val.errormessage = message; 
    val.title = message; 

    // fire the validation function to validate what is currently in the textbox 
    val.isvalid = val.evaluationfunction(val); 
    //call the function to manipulate the UI 
    validatorUpdateDisplay(val); 
} 

function validatorUpdateDisplay(val) 
{ 
    if (val.isvalid) { 

     //make the error invisible 
     val.display = "none"; 
    } 
    else { 

     var browser = navigator.appName; 

     //different browsers get updated differently, IE really the only main one to update differently. 
     if (browser == "Microsoft Internet Explorer") { 
      val.ValidatorCalloutBehavior._errorMessageCell.innerText = val.errormessage; 
     } 
     else { 
      val.ValidatorCalloutBehavior._errorMessageCell.textContent = val.errormessage; 
     } 

     //make the error visible 
     val.display = "inline"; 
    }   
} 

あなたはInternet Explorerが、残りのと同じように動作しませんでした見ることができるように私がテストしたブラウザはそうでした!誰かがこれを行うより良い方法を持っている場合、共有してください、そして、私はこの答えがいくつかの人々を助けることを願っています!

ありがとうございました

関連する問題