Как мне обойти asp.net автоматическая генерация идентификаторов, когда я использую jquery, которому нужны идентификаторы?

#jquery #asp.net #validation #jquery-validate

#jquery #asp.net #проверка #jquery-validate

Вопрос:

Я использую популярный плагин Validate от jquery для проверки всех моих полей. Это отлично работает, когда поля ввода не выполняются на сервере и, следовательно, не переименовывают все идентификаторы и имена для ввода.

Мне интересно, есть ли другой способ выбора входных данных в jquery, чтобы я все еще мог использовать плагин. Jquery приведен ниже:

 <script type="text/javascript">
jQuery.validator.messages.required = "";
$(document).ready(function () {
    $('#form1').validate({
        rules: {
            firstName: {
                required: true,
            },
        }
    });
});
  

В настоящее время, если я использую <asp:TextBox.../> идентификатор, получается «ContentPlaceHolderBody_firstName», а имя получается «ctl00 $ ContentPlaceHolderBody $FirstName».

Я даже пытался заменить имя в jquery, чтобы отразить как идентификатор, так и имя, но безрезультатно.

Каков наилучший способ обойти это? Могу ли я добавить класс и выбрать этот способ? И если да, то как будет выглядеть селектор jquery?

Любая помощь приветствуется! Спасибо!

Комментарии:

1. Какая версия ASP.NET вы употребляете?

Ответ №1:

Вы можете написать некоторый встроенный код на стороне сервера, например:

 $('#form1').validate({
        rules: {
            <%= txtFirstName.ClientID %>: {
                required: true,
            },
        }
    });
  

Ответ №2:

Комментарии:

1. Это более долгосрочное исправление, на которое я надеялся.

Ответ №3:

Установите для свойства ClientIDMode значение static

http://msdn.microsoft.com/en-us/library/1d04y8ss.aspx

Ответ №4:

Селектором jquery для класса будет $(«.classname)

Комментарии:

1. $(‘.classname’) — отсутствует кавычка

Ответ №5:

в .net 4.0 вы можете установить set ClientIDMode="static" и иметь предсказуемые идентификаторы элементов управления

например

 <asp:Label ID="Label1" runat="server" ClientIDMode="static" />
  

и на стороне javascript у вас может быть идентификатор по вашему выбору

 $("#Label1").hide();
  

Ответ №6:

Добавьте класс в свой элемент управления asp, а затем выберите этот класс вместо идентификатора