2015-08-13 3 views
0

У меня есть динамически создаваемые текстовые поля, как (для экс.)Как проверить динамический контроль Textbox

for(int i = 0; i < 4; i++) 
{ 
    TextBox txtControl = new TextBox(); 
    txtControl.ID = "txt" + i; 
    txtControl.AutoPostBack = true; 
    txtControl.TextChanged += txtControl_TextChanged; 
} 

Я хочу, чтобы проверить, что входной Textboxes всегда является целым числом, так что я генерироваться TextChanged обработчика событий в том, что у меня есть CompareValidator следующего

void txtControl_TextChanged(object sender, EventArgs e) 
{ 
    Log = new StringBuilder(); 
    CompareValidator validateTextBox = new CompareValidator(); 
    validateTextBox.Operator = ValidationCompareOperator.DataTypeCheck; 
    validateTextBox.Type = ValidationDataType.Integer; 
    validateTextBox.ControlToValidate = "txt1"; 
    string Message = validateTextBoxNumber.ErrorMessage; 
} 

в мероприятии txtControl_TextChanged стреляет, но если передаются нецелое это не кидает сообщение об ошибке.

Мои вопросы

  1. Как проверить введенный вход целое или не целое число
  2. В примере я давая текстовое поле идентификатор непосредственно, как я могу передать его динамически
+0

стороне клиента проверки или ServerSide? –

+0

, то почему здесь 'jquery' здесь. Его бесполезно! –

+0

Из вашего кода я вижу ваш объект CompareValidator ** validateTextBoxNumber **, но везде, где вы используете ** validateTextBox **, это опечатка? – shreesha

ответ

-1

Вы можете проверить использование javascript, если проверка на стороне клиента достаточно. если вам нужна проверка на стороне сервера, вы можете выполнить проверку следующим образом, не используя compareValidator.

void txtControl_TextChanged(object sender, EventArgs e) 
{ 
    TextBox txtBox = sender as TextBox; 
    if(!string.IsNullOrEmpty(txtBox.Text) && txtBox.Text.All(Char.IsDigit)) 
    { 
    //Throw error message 
    } 
} 

Update:

так txtControl_TextChanged это событие регистрируется для каждого динамического TextBox, он срабатывает, когда соответствующее событие произойдет. поэтому из sender мы можем легко проверить текстовое поле, как я упоминал в фрагменте. TextBox txtBox = sender as TextBox;

вы можете использовать свой собственный метод также, как и аналогичным образом:

void txtControl_TextChanged(object sender, EventArgs e) 
{ 
    Log = new StringBuilder(); 
    TextBox txtBox = sender as TextBox; 
    CompareValidator validateTextBox = new CompareValidator(); 
    validateTextBox.Operator = ValidationCompareOperator.DataTypeCheck; 
    validateTextBox.Type = ValidationDataType.Integer; 
    validateTextBox.ControlToValidate = txtBox ; 
    string Message = validateTextBoxNumber.ErrorMessage; 
} 
+0

Я wan 'txtControl' генерируется динамически, как я могу получить этот конкретный texbox @ un-lucky – SamKPrasad

+0

@SamKPrasad: см. Обновления –

+0

Я даже хочу принять, даже если это' dot (.) ', Так как я haven 't адресованный, прежде чем он не позволяет, что нужно сделать, чтобы принять 'dot' @ un-lucky – SamKPrasad

0

Теперь, поскольку вы отметили jQuery на этот вопрос, у меня есть решение для вашей проблемы jQuery.

Я проверяю текстовое поле только для целочисленного ввода.

Изменить Вы код позади, как показано ниже:

for(int i = 0; i < 4; i++) 
{ 
    TextBox txtControl = new TextBox(); 
    txtControl.ID = "txt" + i; 
    txtControl.cssClass = "validate" 
} 

добавить следующие теги сценария на ваш передний конец:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".validate").keypress(function (e) { 
      if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57 || e.which == 46)) { 
       return false; 
      } 
     }); 
    }); 
</script> 

скрипку: http://jsfiddle.net/38nn3rdx/1/ выше функция не позволит ввод текста.

+0

Как это можно назвать кодом из-за – SamKPrasad

+0

Удалите текст, изменив событие из вашего текстового поля. Также удалите autopostback = true. Вам не нужно делать обратную связь с моим решением. Просто добавьте вышеуказанный код в тег скрипта вашего файла переднего конца. –

+0

Подтверждение для целочисленных значений из кода позади не будет эффективной практикой, так как это даст откат при каждом изменении текста. Сценарии на стороне клиента - лучшее решение для проверки –

0

пожалуйста, попробуйте так: 1) написать ниже функции сценариев на странице, как показано ниже

$(".numeric").bind("keypress", function (event) { 
     if (event.charCode != 0) { 
      var regex = new RegExp("^[0-9]+$"); 
      var key = String.fromCharCode(!event.charCode ? event.which : event.charCode); 
      if (!regex.test(key)) { 
       event.preventDefault(); 
       return false; 
      } 
     } 
    }); 

шаг 2) добавьте класс css для текстового поля. как

<input type="text" id="textboxid" class="numeric" /> 

так что это будет разрешено только числовые значения

Смежные вопросы