【问题标题】:jQuery .val() isnt picking out the value of the innerTextjQuery .val() 没有挑选出 innerText 的值
【发布时间】:2015-02-05 23:03:06
【问题描述】:

我有这个方法:

$(".btnUpdateOnlineCommunity").click(function () {
    var communityDiv = $(this).closest("div");

    var communityName = communityDiv.find('.lblOnlineCommunityDescription');
    var descriptionName = communityDiv.find('.pOnlineCommunityDetails');
    var communityLink = communityDiv.find('.linkOnlineCommunity');

    $('.txtCommunityName').val(communityName.val());
    $('.txtCommunityDescription').text(descriptionName.val());
    $('.txtCommunityLink').val(communityLink.val());

    var communityId = $(communityDiv).data("id");
    $(".dvCommunityDialog").data("communityId", communityId).dialog("open");
});

txtCommunityNametxtCommunityDescriptiontxtCommunityLink 都是带有 dvCommunityDialog 的控件,这是一个 jQuery 对话框。问题是当对话框打开communityName的值时,descriptionNamecommunityLink没有出现在控件中,但是当我这样写$('.txtCommunityLink').val('Test');时,我在控件中得到Test,什么是这里有问题吗?

HTML

<p runat="server" id="pInterest">
    <asp:Button runat="server" ID="btnAddInterest" CssClass="btnAddCommunity" Text="Add Interest" OnClientClick="return false;" />
    <asp:Repeater runat="server" ID="rptOnlineCommunities" OnItemDataBound="rptOnlineCommunities_ItemDataBound">
        <HeaderTemplate>
            <div id="tblUseCommunities" class="dvOnlineCommunityMain">
        </HeaderTemplate>
        <ItemTemplate>
            <div runat="server" id="dvOnlineCommunity" class="dvOnlineCommunity">
                <asp:Label runat="server" ID="lblOnlineCommunityDescription" CssClass="lblOnlineCommunityDescription"></asp:Label>
                <p runat="server" id="pOnlineCommunityDetails" class="pOnlineCommunityDetails"></p>
                <a runat="server" id="linkOnlineCommunity" class="linkOnlineCommunity" target="_blank"></a>
                <p>
                    <asp:Button runat="server" ID="btnUpdateOnlineCommunity" CssClass="btnUpdateOnlineCommunity" Text="Update" OnClientClick="return false;" />
                    <asp:Button runat="server" ID="btnDeleteOnlineCommunity" CssClass="btnDeleteOnlineCommunity" Text="Delete" OnClientClick="return false;" />
                </p>
            </div>
        </ItemTemplate>
        <AlternatingItemTemplate>
            <div runat="server" id="dvOnlineCommunity" class="dvOnlineCommunity">
                <asp:Label runat="server" ID="lblOnlineCommunityDescription" CssClass="lblOnlineCommunityDescription"></asp:Label>
                <p runat="server" id="pOnlineCommunityDetails" class="pOnlineCommunityDetails"></p>
                <a runat="server" id="linkOnlineCommunity" class="linkOnlineCommunity" target="_blank"></a>
                <p>
                    <asp:Button runat="server" ID="btnUpdateOnlineCommunity" CssClass="btnUpdateOnlineCommunity" Text="Update" OnClientClick="return false;" />
                    <asp:Button runat="server" ID="btnDeleteOnlineCommunity" CssClass="btnDeleteOnlineCommunity" Text="Delete" OnClientClick="return false;" />
                </p>
            </div>
        </AlternatingItemTemplate>
        <FooterTemplate>
            </div>                   
        </FooterTemplate>
    </asp:Repeater>
</p>

<div class="dvCommunityDialog">
    <table>
        <tbody>
            <tr>
                <td class="dialogControlLabels">Title/Name:
                </td>
                <td>
                    <input type="text" id="txtCommunityName" class="txtCommunityName" />
                </td>
            </tr>
            <tr>
                <td class="dialogControlLabels">Description:
                </td>
                <td>
                    <textarea id="txtCommunityDescription" class="txtCommunityDescription"></textarea>
                </td>
            </tr>
            <tr>
                <td class="dialogControlLabels">Link:
                </td>
                <td>
                    <input type="text" id="txtCommunityLink" class="txtCommunityLink" />
                </td>
            </tr>
        </tbody>
    </table>
</div>

【问题讨论】:

  • 这个问题不是很清楚,但是按照标题,答案很明显,val() 获取具有 value 属性的元素的值,它没有 获取内部文本。
  • 向我们展示相关的 HTML 源代码
  • 如果@adeneo 是正确的,那么您正在寻找.text() 而不是.val()

标签: javascript jquery asp.net input dialog


【解决方案1】:

鉴于您的 HTML,我可以看到您尝试检索 value 的元素是 labelpa 类型,它们没有要读取的 value 属性。你应该得到他们的text():

var $communityName = communityDiv.find('.lblOnlineCommunityDescription');
var $descriptionName = communityDiv.find('.pOnlineCommunityDetails');
var $communityLink = communityDiv.find('.linkOnlineCommunity');

$('.txtCommunityName').val($communityName.text());
$('.txtCommunityDescription').text($descriptionName.text());
$('.txtCommunityLink').val($communityLink.text());

【讨论】:

  • 谢谢你,Rory...这工作,只是不习惯前端开发,不太确定何时使用 Val 或 Text
  • 很高兴为您提供帮助。使用val()检索元素的value属性,使用text()检索innerHTML
猜你喜欢
  • 1970-01-01
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-06
相关资源
最近更新 更多