Как сравнить и проверить текстовое поле с меткой в случае изменения текста?
У меня есть текстовое поле и ярлык, сидящие рядом друг с другом. Текстовое значение метки берется из выпадающего списка. Я должен повернуть фокус текстового поля на себя, если значение метки меньше значения текстового поля, и это продолжается до тех пор, пока не будет выбрано правильное значение.
Вы не могли бы мне помочь?
Что я уже пробовал:
Это мой код:-
.файл ASPX:-
<div class="row mb10"> <asp:Label runat="server" ID="lbl_Adults" CssClass="col-lg-2 control-label" Text="Adults : " AssociatedControlID="txt_Adults"></asp:Label> <div class="col-lg-6"> <div class="col-lg-4" style="margin-left:-15px;"> <asp:TextBox runat="server" ID="txt_Adults" CssClass="form-control" OnTextChanged="txt_Adults_TextChanged" AutoPostBack="true"></asp:TextBox> <asp:RequiredFieldValidator Font-Bold="true" ForeColor="Red" runat="server" ID="req_Adults" ControlToValidate="txt_Adults" ErrorMessage="Enter No. of Adults"></asp:RequiredFieldValidator> </div> <div class="col-lg-8" style="font-family:'Copperplate Gothic'"> Only <asp:Label runat="server" ID="lbl_No_Of_Adults"></asp:Label> Adult(s) allowed. </div> </div> </div>
Вот код файла. cs:-
protected void txt_Adults_TextChanged(object sender, EventArgs e) { if (txt_Adults==null) { txt_Adults.Text = ""; txt_Adults.Focus(); } else if (Convert.ToInt32(txt_Adults.Text) > Max_NoAdults) { txt_Adults.Text = ""; txt_Adults.Focus(); } else if(Convert.ToInt32(txt_Adults.Text)<=Max_NoAdults) { NoAdults = Convert.ToInt32(txt_Adults.Text); } }
Michael_Davies
Много проблем в вашем коде, взгляните на них;
Вы используете While в обработчике событий с потенциально бесконечным циклом.
Вы проверяете, является ли элемент управления txt_Adults нулевым или нет, так как это обработчик для элемента управления txt_Adults, вы можете смело предположить, что txt_adults существует.
Вы Обращаетесь.ToString литерал, который является строкой "0".
Вы, по-видимому, не проверяете, что txt_Adults содержит только числовые значения, и просто преобразуете их, если пользователь вводит что-либо, кроме чисел, вы получите исключение.
sam_matte
Я удалил цикл while и добавил условие в else, чтобы проверить, если
txt_Adultsнесет значение меньше или равно Max_NoAdults. Литерал " 0 " был преобразован нормально. Мой код работал гладко. Возможно, мне придется применить регулярное выражение, чтобы проверить, является ли введенная строка числом или нет. Вы можете мне помочь?
Michael_Davies
Используйте вопрос "улучшить" и покажите свой код таким, как он есть сейчас.
sam_matte
Я обновил свой код. Пожалуйста, взгляните.
Michael_Davies
txt_Adults-это элемент управления textbox, надеюсь, он не является нулевым, так как обработчик событий был запущен им, вы, вероятно, хотите проверить, что txt_Adults имеет текст, Используйте либо (txt_Adults.Текст != "") или (txt_Adults.Текст.Длина != 0).
if (txt_Adults.Text.Length != 0) { int32 tempValue; if (int32.TryParse(txt_Adults.Text, tempValue) == true) { // // tempValue now contains the integer value of the text // if (tempValue > Max_NoAdults) { txt_Adults.Text = ""; txt_Adults.Focus(); } else if(tempValue <= Max_NoAdults) { NoAdults = tempValue; } } else { txt_Adults.Focus(); } }
sam_matte
Большое спасибо!!!