2015-10-29 69 views
0

我试图创建一个动态文本框,我可以使用它来允许输入多个值。我为此采用了javascript,认为这会让我获取文本值并将其放入列表中,然后将其传递到我的Web应用程序。但是,代码document.getElementById('<%=sidemgr.ClientID%>').value仅从其创建时获取sidemgr.txt的初始值。捡起ASP文本框的更改值

如何获取此文本框的更新值?我必须使用JavaScript文本框吗?

这里是JavaScript我

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#btnAdd").click(function() { 
      var value = document.getElementById('<%=sidemgr.ClientID%>').value; 
      var field = $("#field").val(); 
      var input = "<div id='listDiv' />"; 
      var newRow = "<tr><td>" + field + "</td><td>" + value + "</td></tr>"; 
      $('#controls').append(newRow); 
     }); 
    }); 
</script> 

和HTML

<div> 
     <asp:TextBox ID="sidemgr" runat="server"></asp:TextBox> 
      <br /> 
<input id="btnAdd" type="url" value="Add" /> 
     <asp:Button ID="btnProcess" runat="server" Text="Process" OnClick="Process" /> 
<table id="controls" cellpadding="10" cellspacing="10">   
     </table> 
    </div> 

C#代码背后

protected void Process(object sender, EventArgs e) 
    { 
     var parameters = Request.Form["parameters"]; 
     if (parameters != null && parameters.Count() > 0) 
     {     
      parameters.Split(',').ToList(). 
       ForEach(p => 
       { 
        Response.Write(p + "<br />"); 
       }); 
     } 
    } 

请注意,其中一些来自我前一段时间发现的解决方案。

+0

@ Cal279好的电话,我注意到我自己却忘了更新问题。话虽如此,“价值”应该在哪里,只有“未定义”。我接受'field'目前是不确定的,因为我还没有使用它,但肯定'value'应该保存我的文本框的值? – Wolfish

+0

你可以尝试使用JQuery来访问它,看看是否有任何区别? - 例如$( '#<%= sidemgr.ClientID%>')VAL(); - 就像猜测一样(我的推理没有逻辑)。 – CalC

+0

@ Cal279没有快乐。我确实恢复了“价值”,现在我已经改变为div而不是表格了,我可以看到它。不幸的是,我不能使用div,因为我需要将这些值传递给我的c#后端。 – Wolfish

回答

1

创建hiddenfield抱着你的服务器所需的值,你在做服务器犯规的Request.Form的值“参数”]

  $(document).ready(function() { 
 
       $("#btnAdd").click(function() { 
 
        var value = document.getElementById('<%=sidemgr.ClientID%>').value; 
 
        var field = $("#field").val(); 
 
        var input = "<div id='listDiv' />"; 
 
        var newRow = "<tr><td>" + field + "</td><td>" + value + "</td></tr>"; 
 
        $("#parameters").val($("#parameters").val()+value+",") 
 
        $('#controls').append(newRow); 
 
       }); 
 
      });
 <div> 
 
      <asp:TextBox ID="sidemgr" runat="server"></asp:TextBox> 
 
      <input type="hidden" id="parameters" name="parameters"/> 
 
      <br /> 
 
      <input id="btnAdd" type="url" value="Add" /> 
 
      <asp:Button ID="btnProcess" runat="server" Text="Process" OnClick="Process" /> 
 
      <table id="controls" cellpadding="10" cellspacing="10">   
 
      </table> 
 
     </div>

通过这种方式hiddenfield服务器将收到Request.Form [“参数”],如“value1,value2”,

或者您使用多个名为“parameters []”的隐藏域,插入表中,并使用[R equest.Form [“parameters”]作为列表

+0

谢谢,我会给你一个机会,然后回复给你,大概明天吧。 – Wolfish

+0

嘿,这工作得很好,谢谢! – Wolfish