我一直在努力整理我的代码,并希望将一些JS移动到一些自定义的.JS文件中。
我遇到了getelementbyid的问题,它在脚本加载时无法获取值。
错误是'无法获取未定义或空引用的属性'值'我只是将脚本移动到.JS并添加了指向页面头部的链接。
function SearchText() {
$(".autosuggest").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/JQueryAutoComplete.aspx/GetCustomerTypeAutoCompleteData",
data: "{'Customer':'" + document.getElementById('<%=txtCustomerType.ClientID %>').value + "'}",
dataType: "json",
success: function (data) {
response(data.d);
},
error: function test(xhr) {
alert(xhr.status + " - " + xhr.statusText);
}
});
答案 0 :(得分:2)
您无法在外部JavaScript文件中使用ASP.Net语法。所以'<%=txtCustomerType.ClientID %>'
将保持原样,这不是DOM中的有效ID。
我建议你需要将ID传递给SearchText
函数并使用它来查找它。例如:
function SearchText(clientID) {
//...
data: "{'Customer':'" + document.getElementById(clientID).value + "'}"
//...
}
甚至更好,将值传递给函数:
function SearchText(clientValue) {
//...
data: "{'Customer': '" + clientValue + "' }"
//...
}
并从您的页面调用它,例如:
SearchText(document.getElementById('<%=txtCustomerType.ClientID %>').value);