为什么我无法从javascript(.js)文件中获取文本框的值?

时间:2014-01-22 16:34:02

标签: javascript jquery html asp.net

我一直在努力整理我的代码,并希望将一些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);
                }


            });

1 个答案:

答案 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);