2015-12-04 2 views
3

Я использую автозаполнение JQuery для текстового поля на моей странице .aspx. Страница содержит раскрывающийся список, в котором пользователь может выбрать несколько разных категорий и объединяется с текстовым полем, где они могут вводить поисковый запрос. Теперь проблема заключается в том, что мне нужен только автозаполнение, чтобы работать для одного из параметров категории. Мой код выглядит примерно так: .aspx:JQuery autocomplete только если определенное условие выполнено

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" style="margin-left: 55px; margin-right: 10px;" Height="31px" > 
       <asp:ListItem Text="Name" Value="Name"></asp:ListItem> 
       <asp:ListItem Text="JobTitle" Value="JobTitle"> </asp:ListItem> 
       <asp:ListItem Text="City" Value="City"></asp:ListItem> 
</asp:DropDownList> 
<asp:TextBox ID="TextBox1" runat="server" ClientIDMode="Static" ></asp:TextBox> 

Код позади для ниспадающего/текстовое поле:

void ResultsFilter() 
{ 
    if (DropDownList1.SelectedValue.ToString() == "Name") 
    { 

     ObjectDataSource1.FilterExpression = "Name LIKE '%" + TextBox1.Text + "%' "; 

    } 
    else if (DropDownList1.SelectedValue.ToString() == "JobTitle") 
    { 

     ObjectDataSource1.FilterExpression = "JobTitle LIKE '%" + TextBox1.Text + "%' "; 

    } 
    else if (DropDownList1.SelectedValue.ToString() == "City") 
    { 

     ObjectDataSource1.FilterExpression = "City LIKE '%" + TextBox1.Text + "%' "; 

    } 
} 

, И Javascript для автозаполнения:

<script type="text/javascript"> 
    $(function() { 
     var availableTutorials = [ 

      "Director", 
      "Broker", 
      "Medical", 
      "R&D", 
      "Sales Executive", 

     ]; 
     $("#TextBox1").autocomplete({ 
      minChars: 0, 
      delay: 0, 
      source: availableTutorials, minLength:0 
     }).on('focus', function() { $(this).keydown(); 

     }); 

    }); 
    </script> 

Так в основном Я хочу только, чтобы функция автозаполнения применялась, когда применяется (DropDownList1.SelectedValue.ToString() == "JobTitle"). Не знаете, как это сделать с Javascript/Code. Любая помощь действительно ценится!

ответ

4

Вы могли бы сделать что-то вроде этого:

if($('#<%= DropDownList1.ClientID %>').val() === 'JobTitle'){ 
    $("#<%= TextBox1.ClientID %>").autocomplete({ 
     // code 
    }); 
} 

Вместо нагрузки, вы можете инициализировать его на фокус:

$("#<%= TextBox1.ClientID %>").on("focus", function(){ 
    if($('#<%= DropDownList1.ClientID %>').val() === 'JobTitle'){ 
     $(this).autocomplete({ 
     // code 
     }); 
    } 
}); 
+0

Спасибо, я пробовал, но получаю ошибку «Имя" DropDownList1 'не существует в текущем контексте. –

+1

Это был простой случай: if ($ (' # DropDownList1 '). Val() ===' JobTitle ') {$ ("# TextBox1"). Autocomplete// code Ваш ответ заставил меня туда, поэтому я буду принимать его как правильный ответ –

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