我正在尝试实现一个自动完成搜索框,该搜索框基于在JavaScript中选择的下拉列表ListItem更改其自动完成的文本。但是,使用IF/else语句时,我无法使此自动完成工作。我在下面发布了我的代码:
<script type="text/javascript">
$("#searchTypeDD").change(function DDChange() {
var searchType = $('#searchTypeDD').val();
var searchData = null;
var searchMethodName = null;
var searchTerm = $('#searchTermEntered').val();
if (searchType == 'movieSearch') {
data = { name: searchTerm };
searchMethodName = "GetmovieTitle";
}
else {
data = { director: searchTerm };
searchMethodName = "Getdirector";
}
$("#searchTermEntered").autocomplete({
source: function (request, response) {
$.ajax({
url: "AutoCompleteService.asmx/" + searchMethodName,
dataType: "jsonp",
data: searchData,
success: function (data) {
response(data);
}
});
},
minLength: 2,
select: function (event, ui) {
log("Selected: " + ui.item.value + " aka " + ui.item.id);
}
});
});
如果您正在使用的代码,则有一个错别字。您有$:ajax
而不是$.ajax
(请参见下文)
$(document).ready(function(){
$(".searchTermEntered").autocomplete({
source: function(request, response) {
var searchType = $('.searchTypeDD').val();
var searchData = null;
var searchMethodName = null;
var searchTerm = $('.searchTermEntered').val();
if (searchType == 'movieSearch') {
searchData = { name: searchTerm };
searchMethodName = "GetmovieTitle";
}
else {
searchData = { director: searchTerm };
searchMethodName = "Getdirector";
}
$.ajax({
url: "AutoCompleteService.asmx/" + searchMethodName,
dataType: "jsonp",
data: searchData,
success: function( data ) {
response( data );
}
});
},
minLength: 2,
select: function(event, ui) {
log( "Selected: " + ui.item.value + " aka " + ui.item.id );
}
});
});
更新:我的代码中有一个错字。它已更新,应该为您服务。唯一的警告是您正在使用.NET,并且当.NET呈现页面时,您的下拉列表的ID不会被搜索。ASP.NET将一堆术语附加到控制ID的末端,以确保其唯一,并提供了其父母控制和SO-ON的地图。因此,我建议您这样做以进行下拉控制:
和您的输入相同:
然后,当我们通过类名($(。xxx)选择器)而不是ID($(#xxx)选择器)选择控件时,上面的代码将起作用。