BebeSaiyan Ответов: 3

Проверка для моих текстовых полей ASP не работает с использованием javascript и ASP.NET


Привет! Я просто хочу спросить, почему моя проверка формы для текстовых полей asp не работает. Это должно быть похоже на то, когда пользователь не вводит текст в текстовое поле, Описание В теге абзаца будет отображаться, чтобы угодить вводу текста. Но это не работает.Пожалуйста, помогите мне решить эту проблему.

Что я уже пробовал:

Вот код для javascript:

function checkForm() {
    var errors = [];

    if ($("#itemBrand").value == "") {
        errors[0] = "Please input a text!";
    }

    if ($("#itemModel").value == "") {
        errors[1] = "Please input a text!";
    }
    
    if (errors.length > 0) {
        if (errors[0] != null) {
            document.getElementById("itemBrandValidate").innerHTML = errors[0];
        }

        if (errors[1] != null) {
            document.getElementById("itemModelValidate").innerHTML = errors[1];
        }
     return false;
   }
  return true;
}


А вот и aspx:

<asp:TextBox ID="itemBrand" runat="server" BackColor="#FFFF66" BorderColor="Black" BorderWidth="1px" Height="20px" Width="300px"></asp:TextBox><br />
                        <p  id="itemBrandValidate"></p>

<asp:TextBox ID="itemModel" runat="server" BackColor="#FFFF66" BorderColor="Black" BorderWidth="1px" Height="20px" Width="300px"></asp:TextBox><br />
                        <p  id="itemModelValidate"></p>

<asp:Button ID="Button1" runat="server" CssClass="submitButton" Text="Save Item" OnClick="Button1_Click" OnClientClick="return checkForm()"/>

ZurdoDev

Вы должны его отладить.

3 Ответов

Рейтинг:
2

Karthik_Mahalingam

использовать .вал()[^] вместо .value

$("#itemBrand").val()


Рейтинг:
1

Richard Deeming

Нет необходимости в пользовательском скрипте проверки. Вместо этого используйте встроенные элементы управления проверкой:

<asp:TextBox ID="itemBrand" runat="server" BackColor="#FFFF66" BorderColor="Black" BorderWidth="1px" Height="20px" Width="300px"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" ControlToValidate="itemBrand" Display="Dynamic" Text="Please input a text!" />
 
<asp:TextBox ID="itemModel" runat="server" BackColor="#FFFF66" BorderColor="Black" BorderWidth="1px" Height="20px" Width="300px"></asp:TextBox><br />
<asp:RequiredFieldValidator runat="server" ControlToValidate="itemModel" Display="Dynamic" Text="Please input a text!" />
 
<asp:Button ID="Button1" runat="server" CssClass="submitButton" Text="Save Item" OnClick="Button1_Click" />

Это будет иметь дополнительное преимущество в том, что входные данные будут проверяться как на сервере, так и на клиенте. Вам просто нужно проверить Page.IsValid:
protected void Button1_Click(object sender, EventArgs e)
{
    if (!Page.IsValid) return;
    
    ...
}

Валидация ASP.NET серверные элементы управления[^]
Проверка Веб-Форм[^]
[Как мне:] использовать элементы управления валидацией в ASP.NET? | Майкрософт Документы[^]


Рейтинг:
1

asalgadoscr

Когда вы проверяете свой HTML-код, вы можете увидеть, что идентификатор элемента управления изменился. Это делается для предотвращения конфликтов между другими элементами управления id. ASPX имеет атрибут по умолчанию в элементах управления "AutoID",если вы хотите получить идентификатор, сгенерированный для этого элемента управления, вы должны использовать

'#<%= '+ txtID.ClientID +' %>'
или другой вариант не самый лучший,но можно добавить атрибут
ClientIDMode="Static" 
тогда Ваш идентификатор не изменится.
Пример это будет выглядеть так,

function checkForm() {
    var errors = [];
 
    if ($('#<%= '+ itemBrand.ClientID +'%>').value == "") {
        errors[0] = "Please input a text!";
    }
 
    ...
}