【问题标题】:ASP.NET Textbox value coming empty on server side when set from JQuery从 JQuery 设置时,ASP.NET 文本框值在服务器端变为空
【发布时间】:2015-02-01 16:06:19
【问题描述】:

我正在从 javascript 设置 asp.net 文本框的值,然后尝试从后面的代码中访问相同的值,但它是空的。我完全不知道为什么会这样。

正如某处所建议的那样,我尝试将 ASP.NET 文本框控件更改为使用 runat 服务器输入 HTML 控件,事情就像一个魅力。但我很想知道为什么该死的 asp.net 文本框会这样。

以下是代码块:

标记

<div class="ingredient-block">
    <span>
       <asp:Localize ID="lblIngrQty" runat="server" Text="<%$ Resources:Resources, lblIngrQty %>"></asp:Localize></span><br>
       <asp:TextBox ID="txtQty" CssClass="txtBack" Width="50px" runat="server" TabIndex="10" onchange="fnVerifyQuantityValue(this);" onfocus="fnShowQtyOnFocus(this);" onblur="fnHideKeywordWindow(this);"></asp:TextBox>
       <actAjax:TextBoxWatermarkExtender ID="TeterxtBox5_TextBoxWamarkExtender" runat="server"
       WatermarkText="<%$ Resources:Resources, lblIngrQty %>" Enabled="True" WatermarkCssClass="watermark1" TargetControlID="txtQty">
       </actAjax:TextBoxWatermarkExtender>
</div>

Javascript

function fnShowQtyOnFocus(oQty) {
        var hiddenQtyKw = fnUnEscapeXMLValue($("#<%=hdnQtyCommonKw.ClientID%>").val());

        if (hiddenQtyKw.length > 1) {
            var xmlCommonQty = $.parseXML(hiddenQtyKw);
            $XMLCommonQTY = $(xmlCommonQty);
            var keywordCollection = $XMLCommonQTY.find('Name');

            var ul = document.createElement("ul");

            for (index = 0; index < keywordCollection.length; index++) {
                var li = document.createElement("li");
                li.innerHTML = keywordCollection[index].textContent;

                li.onclick = function () {
                    if ($("#" + oQty.id).val() == "Qty" || $("#" + oQty.id).val() == "Mängd") {
                        $("#" + oQty.id).val("");
                        $("#" + oQty.id).val(this.innerHTML);
                    }
                    else {
                        $("#" + oQty.id).val($("#" + oQty.id).val() + this.innerHTML);
                    }
                };

                $(ul).append(li);
            }

            $(".showKeyword").html("");
            $(".showKeyword").show();
            $(".showKeyword").append(ul);

            var offset = $("#" + oQty.id).offset();
            var posY = offset.top - $(window).scrollTop();
            var posX = offset.left - $(window).scrollLeft();

            $(".showKeyword").css("top", posY - 20);
            $(".showKeyword").css("left", posX);
        }
    }

不要怀疑 JS 函数。它正在创建一个带有假设 5 li 元素的无序列表,将该 ul 元素添加到 div 并在 txtQty 控件上方显示 div。然后用户将单击 5 个元素中的任何一个,然后我将 li 值复制到 txtQty 控件。请参阅 onclick 处理程序。

所以,现在当我通过按钮回发访问服务器时,我在 txtQty 中看不到任何值。

请帮忙。

谢谢

【问题讨论】:

    标签: javascript asp.net textbox


    【解决方案1】:

    根据我的发现,问题出现是因为我使用了扩展此文本框的 AJAX 水印控件。当我删除它时,它起作用了。

    所以,我的解决方案是使用 runat 服务器的输入。并且对于水印使用 placeHolder 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-21
      • 2017-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      相关资源
      最近更新 更多