从javascript / jquery读取文本框值

时间:2014-07-14 09:10:02

标签: javascript jquery asp.net

我创建了一个以气泡作为标记的谷歌地图。我在后面的代码中创建了一个数组,并设置了一个包含这些值的文本框。文本框中填充了正确的值,但我无法从jquery / javascript中读取值...

使用这些声明时:

    var markers = $('#txtMarkers').val();
     var markers =  document.getElementById('<%=txtMarkers.ClientID%>')

我收到此错误消息:

    0x800a138f - JavaScript runtime error: Unable to get property '0' of undefined or null reference

当我使用它时:

    var markers = document.getElementById('<%=txtMarkers.ClientID%>').value;

我收到此错误消息:

      0x800a138f - JavaScript runtime error: Unable to get property 'value' of undefined or null reference

但是,文本框正在填充。这是在文本框中填充的内容(添加了手动值以查看文本框中填充的内容):

    [{"title":"DRIVER","lat":"25.9820333333333","lng":"28.1289333333333","description":"0.6608917"},
    {"title":"DRIVER","lat":"-25.982","lng":"28.1289333333333","description":"0.6643902"},
    ...more values}]

手动添加这些值会加载地图和标记,但它似乎不会从文本框中读取值。我做错了吗?


更多信息

当我把$(文件).ready(function(){});在页面上我收到错误

    0x800a1391 - JavaScript runtime error: 'initialize' is undefined

所以我把body标签中的onload =“initialize()”输出,导致出现这个错误:

    0x800a138f - JavaScript runtime error: Unable to get property 'lat' of undefined or null reference

在这段代码中,因为没有信息,因为方法必须在加载之前运行(来自db的信息):

     var mapOptions = {     
              center: new google.maps.LatLng(markers[0].lat, markers[0].lng), 
              zoom: 8,
              mapTypeControl: true,
              panControl: true,
                zoomControl: true,
              mapTypeId: google.maps.MapTypeId.ROADMAP         
          };

1 个答案:

答案 0 :(得分:1)

由于在加载DOM元素之前您的客户端脚本要求该元素的值,您可能会得到null或未定义的值。

<强> Here's a similar scenario

演示应用程序:

MyForm.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MyForm.aspx.cs" Inherits="_24733063.MyForm" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script src="Scripts/jquery-1.10.2.js"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                alert($("#dataTextBox").val());
            });
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:TextBox ID="dataTextBox" runat="server" />
            </div>
        </form>
    </body>
</html>

MyForm.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    dataTextBox.Text = "some text values";
}