使用Jquery从下拉列表中更改标签文本

时间:2014-02-19 17:09:15

标签: jquery asp.net

我似乎无法解决这个问题......或者确实更改了标签文字。任何人都可以提供任何建议吗? 警报就在那里,因为我正在测试事件是否真的在发射..它似乎并不是。唯一的另一条信息是,这是一个fancybox iframe中的表单。我甚至不确定我是否有正确的代码来更改文本,但这确实是第二个问题......现在我无法解决该事件。

代码是

<asp:DropDownList ID="ddlPUom" runat="server" CssClass="form-control input-sm"></asp:DropDownList>



<asp:Label ID="lblpuom" ccclass="col-xs-2 control-label" runat="server" Text=""></asp:Label>


<script type="text/javascript">
    $('#ddlPUom').change(function () {
        alert("did this fire?");
        var lbltext = doc.getElementById("ddlPUom");
        var lblPUOM = doc.getElementById("lblpuom");
        lblPUOM.lbltext = lbltext.innerhtml;
    });
</script>

感谢所有评论..你引导我朝着正确的方向前进。最后,我将标签更改为使用上述代码的标准<label></label>,并创建了一个document.ready函数,用于从后面的代码设置的下拉列表中进行更新。

3 个答案:

答案 0 :(得分:1)

原因是,由于ddlPUom是服务器端控件,因此在DOM中呈现时,id会更改。页面信息和控制信息会被添加到前面,并变成类似ctl00_Main_ddlPUom

的内容

使用

$('[id$=ddlPUom]').change(function () { // id which ends with the text 'ddlPUom'

$('[id*=ddlPUom]').change(function () { // id which contains the text 'ddlPUom'

但这里还有其他几种方式 https://stackoverflow.com/a/20227176/489512

答案 1 :(得分:0)

您的代码看起来足够正确,可以执行警报。也许你的控件的id实际上并没有设置为ddlPUom。它有时是区分大小写的。请参阅此帖有关区分大小写JQuery class selectors like $(.someClass) are case sensitive?

的信息

还要检查浏览器中的错误控制台,看看是否有任何javascript错误。 Firefox:工具&gt; Web开发人员&gt;错误控制台 Chrome:右键单击页面并选择inspect元素,在出现的窗口中单击Console。

现在您添加了html - 下面的代码应该触发事件。

$(document).ready(function(){    
$('#<%=ddlPUom.ClientID%>').change(function () {
            alert("did this fire?");
    }
});

答案 2 :(得分:0)

你可能会尝试这样的事情......

<script type="text/javascript">
    $('#ddlPUom').change(function () {
        alert("did this fire?");
        var lbltext = doc.getElementById("<%=ddlPUom.ClientID%>");
        var lblPUOM = doc.getElementById("<%=lblpuom.ClientID%>");
        lblPUOM.lbltext = lbltext.innerhtml;
    });
</script>

您可能还需要将ClientID部分添加到下拉列表中。