2012-08-22 41 views
0

我正在动态构建一个页面。此页面需要从输入标签读取信息,但它是动态的。我应该设置的东西是一个阵列,因为我看你可以提交一个带有文本输入数组的表单吗?

我想保留数据集。

<script> 
    function adjustPilots(){ 
var pilots = $("#numPilots").val(); 
var info = '<td><table>'+ 
    '<tr><td>Minumum Collateral</td><td colspan="2"><input type = "text" size = "10" maxLength = "6" /> to <input type = "text" size = "10" maxLength = "6" /></td></tr>'+ 
    '<tr><td>Reward</td><td colspan="2"><input type = "text" size = "10" maxLength = "6" /> to <input type = "text" size = "10" maxLength = "6" /></td></tr>'+ 
    '<tr><td>Volume</td><td colspan="2"><input type = "text" size = "10" maxLength = "7" /> to <input type = "text" size = "10" maxLength = "7" /></td></tr>'+ 
    '<tr><td>Start: </td><td><input type = "text" name = "s" id = "s" class = "s" value autocomplete = "off"></td></tr>'+ 
    '<tr><td>End: </td><td><input type = "text" name = "e" id = "e" class = "e" value autocomplete = "off"></td></tr>'+ 
    '</table></td>'; 


for(var i = 0; i < Number(pilots); i++){ 
    $("#pilotrow").append(info); 
} 
} 
</script> 
<body> 
<form> 
<table> 
<tr><td>Number of Pilots</td><td colspan="2"><input id = "numPilots" type = "text" size="3" maxLength="3" onchange = 'adjustPilots()' /></td></tr> 
<tr id = "pilotrow"></tr> 

<tr><td><input type = "submit" name = "submit"></td></tr> 
</table> 
</form> 
</body> 

我在想的一个选择就是不使用表单,并用javascript构建它。然后创建一个JSON对象并使用AJAX将其发送到服务器。这是否是一个坚实的方式,或者有更好的主意?

+0

几个你的投入没有'name'属性,你将如何序列化这些数据? – Paul

+0

我不确定你在问什么,但如果我没有误解,你可以将'display:none'设置为该表,然后将其包含在你的html代码中,然后删除并将其分配给一个变量,并使用' clone()'jQuery方法追加它的克隆版本。 – inhan

回答

3

至少有两种方法可以做到这一点。

没有JavaScript,您指示泄一个形式元素的数组这样

<input type="text" name="input[]"/> 
<input type="text" name="input[]"/> 
<input type="text" name="input[]"/> 
<input type="text" name="input[]"/> 

在PHP

$inputs = $_POST['input']; 
for($inputs as $inp){ 

} 

使用Ajax和jQuery,你可以只是简单的序列化表单,并张贴到后端

+0

假设这是正确的,这确实是我正在寻找的答案。 – Fallenreaper

0

尝试利用隐藏的输入标签以任何您喜欢的方式发送数据。例如:

<input type="hidden" name="myinput" id="myinput" /> 

现在JS:

$("form").submit(function() { 
    $("input").not("#myinput").each(function() { 
     $("#myinput").val($("#myinput").val()+$(this).val()); 
     // you can format anyway you want this is just an example 
    }); 
}); 

希望这有助于!

2

您可以通过在输入中使用name属性来实现此目的。像这样:

<input type="text" name="pilots[]" /> 

然后,你可能想要跟踪你有多少飞行员,你可以发送一个索引数组。像这样:

<input type="text" name="pilots[0][minumumCollatural]" /> 
<input type="text" name="pilots[0][reward]" /> 
<input type="text" name="pilots[0][volume]" /> 

当您提交表单服务器这样的话,你的飞行员的阵列看起来像:

$pilots = $_POST['pilots']; 

// Which looks like 
array(
    [0] => array 
      (
      [minumumCollatural] => // Some number 
      [reward] => // Some number 
     ) 
    [1] => array 
      (
      [minumumCollatural] => // Some number 
      [reward] => // Some number 
     ) 
) 
相关问题