我有一个带有文本框的表单。如果我在该文本框中输入数字3,那么我会使用Javascript创建3个文本框。就像这样:
这是html代码:
<span>Cate intrebari va contine chestionarul?</span>
<input type='text' id='nrintrebari'/>
</td>
<td>
<input type='button' value='Creaza intrebari' onclick='generate()'/>
<input type='button' value='Save' id='btn_intrebari'/>
</td>
</tr>
</table>
<br><br>
<div id='sim'>
</div>
这是创建文本框的javascript代码:
var a=0;
function generate()
{
var tot = document.getElementById("nrintrebari").value;
var tbl = document.getElementById("sim");
for(var i =1;i<=tot;i++)
{
a++;
tbl.innerHTML = tbl.innerHTML +'Intrebare nr.'+ a +' <input type="text" size="100" maxlength= "200" name="intrebare[]" style="height:30px; background-color:#B8B8B8; " > <br><br><br> ';
}
}
如果我想将文本框中的数据传递给php文件,我会像这样做一个foreach:
foreach($_POST['intrebare'] AS $textbox)
{
$sql="INSERT INTO intrebari values ('','".$_SESSION['cod']."','$textbox','1')";
if (!mysql_query($sql))
{
die('Error: ' . mysql_error());
}
}
一切都很好,但这是通过刷新页面完成的。我想在不刷新页面的情况下这样做,所以我决定使用Ajax。像这样:
$(document).ready(function () {
$('#btn').click(function () {
$.ajax({
type: "POST",
url: 'pag1.php',
data: "intrebare[]=" + $('#intrebare[]').val(),
success: function (data) {
$('#status').html(data);
}
});
});
});
我使用了我在Javascript代码中命名并声明为数组的文本框的名称:intrebare []但是当我点击按钮时没有任何反应。如果我声明文本框简单,而不是像intrebare那样的数组,则传递该值。如何像数组一样通过Ajax发送数据?
答案 0 :(得分:0)
不要使用“intrebare [] ......
你只能使用“intrebare”
另一种方法是var str = $(“form”)。serialize();如果你想使用表单,那将从表单中获取值。
答案 1 :(得分:0)
<form method="POST" id="textvalues">
<span>Cate intrebari va contine chestionarul?</span>
<input type='text' id='nrintrebari'/>
</td>
<td>
<input type='button' value='Creaza intrebari' onclick='generate()'/>
<input type='button' value='Save' id='btn_intrebari'/>
</td>
</tr>
</table>
<br><br>
<div id='sim'>
</div>
</form>
$(document).ready(function () {
$('#btn').click(function () {
$.ajax({
type: "POST",
url: 'pag1.php',
data: "intrebare[]=" + $('#intrebare[]').val(),
success: function (data) {
$('#status').html(data);
}
});
});
});
您也可以通过这种方式将值发送到您的php页面
答案 2 :(得分:0)
您不能将名称用作“#whatevername” 为此使用控件的ID。并且鉴于您不能拥有相同ID的控件(我们可以,但不推荐)您可以为所有文本框提供一个类,并从所有控件中获取所有值。
var a = 0;
function generate() {
var tot = $("#nrintrebari").val();
var tbl = $("#sim");
for (var i = 1; i <= tot; i++) {
a++;
tbl.append('Intrebare nr.' + a + '<input type="text" size="100" maxlength= "200" class="intrebare" style="height:30px; background-color:#B8B8B8; " >');
}
}
这也不是在表/ div中追加控件,文本的完美方法。但它可以在某种程度上帮助你。
获取此类值。
var values = [];
$(".interbare").each(function () {
values.push($(this).val());
});
现在您可以将values数组作为字符串(values.join(','))或数组传递给任何页面或服务。
希望这会奏效。