Ок, все,
Я выяснил свою собственную проблему и подумал, что могу выложить свои выводы сюда, если другие попытаются сделать что-то похожее на меня.
В javascript я передаю объект regularexpressionvalidator, связанный с текстовым полем, в функцию, которая изменит регулярное выражение и сообщение об ошибке в зависимости от значения в раскрывающемся списке. Если пользователь изменил значение выпадающего списка, я хотел, чтобы validator и 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 работал не так, как остальные браузеры, с которыми я тестировал! Если у кого-то есть лучший способ сделать это, поделитесь, и я надеюсь, что этот ответ поможет некоторым людям!
Спасибо