【问题标题】:Jquery getting value from a hidden text fieldJquery 从隐藏的文本字段中获取值
【发布时间】:2012-04-30 09:52:24
【问题描述】:

我正在尝试使用 jquery 从隐藏的文本字段中获取值,但没有成功。 这是动态添加html到页面的javascript函数。

          function(lng,lat)
          {
             document.getElementsByClassName("BranchDetails").item(0).innerHTML+=""
          +" <div class='Branches'>"
          +"     <div class='DeleteIcon'><img src='../Images/deleteicon.png' width='15' height='15'></div>"

          +"     <div class='BranchName'>"
          +"      <div class='CompanyBranchNameText'>"
          +"          Company Name"
          +"      </div>"


          +"      <div class='EditCompanyBranchName'>"
          +"          <label>Company Name:</label><input type='text' class='EditNameText' >"
          +"          <input type='hidden' class='longitudeVal' value='"+lng+"' /><input type='hidden' class='latitudeVal' value='"+lat+"' />"
          +"      </div>"
          +"      <a href='javascript:void(0)' class='EditNameLink'><p>edit...</p></a>"
          +"    </div>"
          +" </div>";
          }

现在我想获取隐藏文本字段的值。 到目前为止,我所做的是。

           $('.Branches').children('.DeleteIcon').click(

        function()
        {
               alert($(this).siblings('.EditCompanyBranchName').children('.longitudeVal').val());
        }
             );

但这给我返回了一个未定义的值。 lng 和 lat 值已成功放入隐藏字段中,我已使用警告框对其进行了检查。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    问题是因为.EditCompanyBranchName 不是.DeleteIcon 的兄弟 - 它是一个孩子。试试这个:

    $('.Branches').children('.DeleteIcon').click(function() {
        var long = $(this).parent().find('.longitudeVal').val();
        var lat = $(this).parent().find('.latitudeVal').val();
        alert(long);
        alert(lat);
    });
    

    这将在与单击的.DeleteIcon 相同的.Branches 元素中找到.logitudeVal.latitudeVal 字段。

    【讨论】:

    • 但是你可以看到 .DeleteIcon 在同一个地方关闭并且 .EditCompanyBranchName 没有进入 .DeleteIcon 的标签内
    • 您不需要在 .longitudeVal 上使用each() 来获取纬度、经度值吗?
    • @RyanFernandes 否,因为find() 只会在父级.Branch 中查找元素。
    • @RyanFernandes 这对我有什么帮助?真正的问题是我没有得到正确的值,尽管它们被正确地附加了。
    【解决方案2】:

    为了简化您的 javascript 点击事件,您可以使用唯一 ID 设置隐藏输入,并使用 Jquery 定位该 ID:

    关于你的函数(lng,lat)

    ...
    <input type='hidden' id="Jquery_latitude" class='latitudeVal' value='"+lat+"' />
    ...
    

    现在是“.DeleteIcon”点击事件:

    $('.Branches').children('.DeleteIcon').live("click", function() {
      var lat = $('#Jquery_latitude').val();
      alert(lat);
    });
    

    注意事项: 我已经用.live() 设置了这个点击事件,以允许它可用于动态创建的元素。

    【讨论】:

    • 从 OPs 描述来看,顶部的代码块被附加了 x 次,使用 id 作为字段将导致重复的 id,导致您的代码无法正常工作。跨度>
    • 我不能直接使用 id 来引用隐藏字段,因为有多个字段是用同一个类生成的,所以我只想对那个类的点击事件执行操作,这就是为什么 $(this) 是必须适应我的情况
    • 很抱歉,Rory McCrossan 的回答是 +',因为它的方法确实解决了问题。
    猜你喜欢
    • 2011-03-12
    • 2011-03-06
    • 2013-12-30
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2012-01-28
    相关资源
    最近更新 更多