【问题标题】:add text to an asp.net textbox control with jQuery使用 jQuery 向 asp.net 文本框控件添加文本
【发布时间】:2011-12-26 06:11:40
【问题描述】:

在网络表单中,我有一些输入字段

<div id="search1">
        <div class="forminput">
            Label 1<br />
            <input type="text" name="Field1" value="" size="20" />
        </div>
        <div class="forminput">
            Label 2<br />
            <input type="text" name="Field2" value="" size="20" />
        </div>
</div>

由于控件失去焦点,输入的值需要返回到 asp.net 文本框控件。我已经能够使用以下代码将值传递给 div 层或标准 html 元素:

    function fieldUpdate() {

            var currentValue = $(this).val();
            var field = $(this).attr("name");

                if (currentValue != "") {
                    $("#results").append(field + ":" + currentValue + "+");
                }
        }
 $(function () {
            $("#search1 :input[type=text]").focusout(fieldUpdate);

        });

但是,这似乎不适用于 asp.net 服务器端控件。 更新 这个问题的目的是将输入到标准 html 输入字段中的值提供到 asp:textbox 控件中

<asp:TextBox ID="results2" Text="" Width="400" runat="server" />

更新 下面是当前解决方案如何工作的屏幕截图。在顶部,当用户输入一个值时,您会看到输入字段,并在每个字段中使用制表符将该值添加到标有结果的 Div 层。我想要做的不是将字段名和值添加到 DIV 元素,而是希望将它们添加到 asp:textbox 控件。

最好将此代码存储在外部 js 文件中而不是 aspx 页面中。

任何人都可以就如何实现这一点提供任何建议吗?

提前致谢

更新解决方案 感谢 James 帮助我完成这项工作。下面是当前实现中使用的 jQuery 代码。

function fieldUpdate() {

            var currentValue = $(this).val();
            var field = $(this).attr("name");
            var txt = $("#<%=results2.ClientID%>");
                if (currentValue != "") {
                    $("#results").append(field + ":" + currentValue + "+");
                    if (txt) {
                        txt.val(txt.val() + field + ":" + $(this).val() + "+");
                    }
                }
        }


        $(function () {
        //only evaluate input text field
            $("#search1 :input[type=text]").focusout(fieldUpdate);

这将允许使用输入字段名称和值填充 asp:textbox。 示例 Field1:foo+Field2:somevalue2+Field3:somevalue3 ...

【问题讨论】:

  • 可以添加服务器端控件创建的HTML吗?
  • 究竟是什么问题:从输入字段中获取值,或者将值设置为 ASP.NET 文本框控件?如果是最后一个,Textbox Control在哪里?
  • @Pbirkoff 我遇到的问题是我需要能够将 html 输入字段中的值配置到 asp:textbox 控件中。为了清楚起见,我已经更新了问题

标签: jquery asp.net webforms


【解决方案1】:

那些不是 ASP.NET TextBox 控件;它们是 HTML 文本输入。不过,要回答您的问题,您可以这样做:

<script type="text/javascript">
    $(function(){
        $("#input1").val("Hello world");
    });
</script>
<input type="text" id="input1" />

我注意到您在示例中设置的是名称而不是 ID。如果您可以选择,我会使用 ID,但您可以按名称查找元素,如下所示:

$("input[name='Field1']").val("Hello world");

如果使用实际的 ASP.NET TextBox 控件,解决方案会有所不同:

<script type="text/javascript">
    $(function(){
        $("#<%=TextBox1.ClientID%>").val("Hello world");
    });
</script>
<asp:TextBox ID="TextBox1" runat="server" />

如果您想获取search1 div 中的所有文本输入,您可以这样做:

$(".forminput input[type='text']").val("Hello world!");

这是上面示例的 jsFiddle:http://jsfiddle.net/DWYTR/

编辑

根据您的评论,您可以在blur 上将值从一个输入复制到另一个输入:

$(".forminput input[type='text']").blur(function(){
    var txt = $("#<%=TextBox1.ClientID%>");
    if (txt){
        txt.val(txt.val() + $(this).val());
    }
});

【讨论】:

  • 是的,詹姆斯,你是对的。这些控件是标准的 html 输入控件,它们需要提供一个 asp.net 控件,所以你是正确的,我从输入到 asp:textbox。很抱歉在问题中没有更清楚地说明这一点
  • 我使用了名称,因为我还想在字段名称中附加值。您建议出于任何原因或仅出于个人喜好使用 ID 而不是名称。谢谢
  • 这取决于你,但在大多数情况下,ID 是标准。
  • James 我尝试了您的解决方案,但它只增加了一个价值。我需要浏览每个字段并将值附加到文本字段中。这样它就建立了一个字符串。 (Field1:Value+Field2:value....) 我尝试使用 append() 但这似乎不起作用。使用 val 只会在任何建议的文本字段中放置一个值。
  • 刚刚更新了最后一个例子。注意到您在输入周围有一个 forminput 类。
猜你喜欢
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
相关资源
最近更新 更多