Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从客户端获取codebehind中的输入文本框值_Javascript_C#_Asp.net_Database_Code Behind - Fatal编程技术网

Javascript 从客户端获取codebehind中的输入文本框值

Javascript 从客户端获取codebehind中的输入文本框值,javascript,c#,asp.net,database,code-behind,Javascript,C#,Asp.net,Database,Code Behind,我已经创建了一个JavaScript按钮,可以在客户端浏览器上添加4个文本框和一个fileupload控件。他们也可以根据需要添加任意数量的这些 我现在的问题是“提交”按钮,如何循环这些控件以获取要放入数据库的值 JavaScript <script type="text/javascript"> var rownum = 1; function AddRow() { var div = document.createElement("div") var divid =

我已经创建了一个JavaScript按钮,可以在客户端浏览器上添加4个文本框和一个fileupload控件。他们也可以根据需要添加任意数量的这些

我现在的问题是“提交”按钮,如何循环这些控件以获取要放入数据库的值

JavaScript

<script type="text/javascript">
var rownum = 1;

function AddRow() {

  var div = document.createElement("div")

  var divid = "dv" + rownum
  div.setAttribute("ID", divid)
  rownum++

  var txtFName = document.createElement("input")
  txtFName.setAttribute("ID", "txtFName" + rownum)
  txtFName.placeholder = "First Name";
  txtFName.style.width = "190px";
  rownum++
  var txtLName = document.createElement("input")
  txtLName.setAttribute("ID", "txtLName" + rownum)
  txtLName.placeholder = "Last Name";
  txtLName.style.width = "190px";
  rownum++
  var txtEmail = document.createElement("input")
  txtEmail.setAttribute("ID", "txtEmail" + rownum)
  txtEmail.placeholder = "Email";
  txtEmail.style.width = "289px";
  rownum++
  var txtInst = document.createElement("input")
  txtInst.setAttribute("ID", "txtAge" + rownum)
  txtInst.placeholder = "Age";
  txtInst.style.width = "100px";
  rownum++
  var _upload = document.createElement("input")
  _upload.setAttribute("type", "file")
  _upload.setAttribute("ID", "upload" + rownum)
  _upload.setAttribute("runat", "server")
  _upload.setAttribute("name", "uploads" + rownum)      
  _upload.style.width = "610px";
  rownum++

  var btnRemove = document.createElement("input")
  btnRemove.type = "button";      
  btnRemove.setAttribute("onclick", "return RemoveDv('" + divid + "');");
  btnRemove.innerText = "Remove";
  rownum++

  var _pdiv = document.getElementById("ParentDiv")

  div.appendChild(document.createElement('br'))      
  div.appendChild(txtFName)      
  div.appendChild(txtLName)      
  div.appendChild(txtEmail)
  div.appendChild(document.createElement('br'))
  div.appendChild(txtInst)
  div.appendChild(document.createElement('br'))
  div.appendChild(_upload)
  div.appendChild(document.createElement('br'))
  div.appendChild(btnRemove)
  div.appendChild(document.createElement('br'))      
  _pdiv.appendChild(div)
}

function RemoveDv(obj) {
  var p = document.getElementById("ParentDiv")
  var chld = document.getElementById(obj)
  p.removeChild(chld)
}

var-rownum=1;
函数AddRow(){
var div=document.createElement(“div”)
var divid=“dv”+rownum
div.setAttribute(“ID”,divid)
罗努姆++
var txtFName=document.createElement(“输入”)
setAttribute(“ID”,“txtFName”+rownum)
txtFName.placeholder=“名字”;
txtFName.style.width=“190px”;
罗努姆++
var txtLName=document.createElement(“输入”)
setAttribute(“ID”,“txtLName”+rownum)
txtLName.placeholder=“姓氏”;
txtLName.style.width=“190px”;
罗努姆++
var txtEmail=document.createElement(“输入”)
setAttribute(“ID”,“txtEmail”+rownum)
txtEmail.placeholder=“电子邮件”;
txtEmail.style.width=“289px”;
罗努姆++
var txtInst=document.createElement(“输入”)
setAttribute(“ID”,“txtAge”+rownum)
txtInst.placeholder=“年龄”;
txtInst.style.width=“100px”;
罗努姆++
var_upload=document.createElement(“输入”)
_upload.setAttribute(“类型”、“文件”)
_upload.setAttribute(“ID”,“upload”+rownum)
_upload.setAttribute(“runat”、“server”)
_setAttribute(“名称”、“上载”+rownum)
_upload.style.width=“610px”;
罗努姆++
var btnRemove=document.createElement(“输入”)
btnRemove.type=“按钮”;
setAttribute(“onclick”,“returnremovedv(““+divid+”);”);
btnRemove.innerText=“删除”;
罗努姆++
var_pdiv=document.getElementById(“ParentDiv”)
div.appendChild(document.createElement('br'))
div.appendChild(txtFName)
div.appendChild(txtLName)
div.appendChild(txtEmail)
div.appendChild(document.createElement('br'))
附件子类(txtInst)
div.appendChild(document.createElement('br'))
div.appendChild(_上传)
div.appendChild(document.createElement('br'))
div.appendChild(btnRemove)
div.appendChild(document.createElement('br'))
_pdiv.儿童(部门)
}
功能移除V(obj){
var p=document.getElementById(“ParentDiv”)
var chld=document.getElementById(obj)
p、 removeChild(chld)
}

ASP.aspx

<table width="100%" class="pagetext_10">
<tr>
    <td colspan="10">
      <input type="button" onclick="AddRow(); 
           return false;" value="Add Employees" />&nbsp;
      <div id="ParentDiv" style="width:100%;">
      </div><br /><br />          
    </td>
   </tr>    
</table>




要循环查看
请求
对象中的所有值,请尝试:

foreach (string s in Request.Form.Keys )        
{       
   var formValue = Request.Form[s];      
}
只要知道字段前缀,就应该能够识别动态前缀


如果您有固定的12个字段控件,3个上载控件,而不是使用JavaScript创建表单字段,那么您可以显示/隐藏隐藏字段的服务器控件,那么这些值在页面生命周期中将正常可用

如果使用
display:none将未使用的元素包装在一个元素中则不会将它们设置为服务器


由于您只有4个动态字段,因此可以直接从请求中读取它们:

var result1 = Request.Form("txtFName1");
// etc ..
如果您可以在没有这些字段的情况下提交,请检查空值:

if (Request.Form["txtFName1"] != null)
{
   // do stuff
}
如果按钮的数量是动态的,只要你也可以提交数量,你应该能够循环通过

然后,您需要添加一个按钮来提交表单:

aspx:


尼古拉,谢谢你的回复。我有5个字段每个按钮点击。如果用户有3名员工要添加,则总共有12个输入文本框和3个输入文件上载控件。有没有一种方法可以通过查看控件来获取服务器上的值,即使客户端的控件是固定数量的,而不是使用javascript创建,您可以显示/隐藏已存在的作为服务器控件的表单字段。您还可以对
请求中的每个
键执行
foreach
。这不是添加的员工数量。所以一次可以是0,下一次可以是5。这完全取决于谁参与进来,以及他们与多少员工打交道,因此控制的数量永远不会一成不变。从C中的代码隐藏中,我可以访问客户端div并通过输入控件进行循环吗?如果div服务器端是使用
runat=server
创建的,则只能通过该服务器端进行循环。您可以通过请求对象进行循环,这应该会给您几乎相同的结果。
<asp:Button id="Submit" Text="Submit" runat="server" OnClick="Submit_Click" />
public void Submit_Click(Object sender, EventArgs e)
{
    // ...do stuff...
}