对不起,我很难问正确的问题,因为我真的不知道我在做什么…我有一个表单,其中包含一个php,默认创建3个不同的行:
<form method="GET" name="NeuerLieferschein" action="Teileposten_INSERT.php">
<?PHP
include ("NeuerLieferschein_Teilespalten.php");
?>
--> NeuerLieferschein_Teilespalten.php
包含在开头创建的这个循环kunde1
, kunde2
, kunde3
:
<?PHP
if(isset($_POST['von']))
{
$von=trim($_POST['von']);
$bis=$von;
}
else
{
$von=1;
$bis=3;
}
for($i=$von; $i < ($bis+1); $i++)
{
require_once("DBFunctions.php");
DBConnect();
$sql="SELECT distinct Nachname, ';' FROM Kunde order by Nachname asc";
$db->SetFetchMode(ADODB_FETCH_NUM);
$Nachnamen=$db->Execute($sql);
echo '<select name="kunde'.$i.'" id="kunde'.$i.'" class="kunde'.$i.'" onclick="selectkunde('.$i.')" >';
echo'<option selected="selected"> </option>';
while (!$Nachnamen->EOF)
{
$Nachnamenzeile=($Nachnamen->fields);
echo'<option value='.$Nachnamenzeile[0].'>'.$Nachnamenzeile[0].'</option>';
$Nachnamen->MoveNext();
}
echo '</select> <br/>';
DBClose();
这很好。现在我想有一个新的行创建一个选项id kunde4
,如果一个按钮被单击。然后是第五行选项kunde5
,如果点击了什么。
我在html页面中添加了以下内容:
<div id="VariableZeilen" name="VariableZeilen" class="VariableZeilen">
<p id="VariableZeilen" name="VariableZeilen" class="VariableZeilen">
<!-- ADD NEW LINES HERE -->
</p>
</div>
<tr>
<td colspan=3>Zeilen erweitern auf<input id="clicked" size="4" onfocus="this.blur();" onclick="mehrTeile();" value="4">
这是Javascript:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
var clickCount = 4;
function documentClick()
{
document.getElementById('clicked').value = ++clickCount;
return clickCount
}
document.onclick = documentClick;
function mehrTeile()
{
var von=document.getElementById('clicked').value;
var dataString = 'von='+ von;
alert ( ( dataString ) );
$.ajax
({
type: "POST",
url: "NeuerLieferschein_Teilespalten.php",
data: dataString,
cache: false,
complete: function (html) {
//I get this alert, so I come so far:
alert("ajax completed ");
//This should show the output in the html section but nothing happens
$(".VariableZeilen").html(html);
}
});
return false;
}
</script>
现在我可以看到,随着警报dataString计数每次我点击。但是我不能,是显示NeuerLieferschein_Teilespalten.php
的php内容在我的<p id=VariableZeilen>
我对Javascript很陌生,所以我猜这可能是一个非常愚蠢的问题,但我在论坛上的搜索并没有让我找到正确的答案。我很高兴,如果有人能帮助我编码这个傻瓜。谢谢/夜
假设您的NeuerLieferschein_Teilespalten.php
工作正确,我会建议一些更改。您有一个输入字段,但是无论值是多少,由于PHP脚本总是只添加一个字段。
这就是为什么我要修改
Zeilen erweitern auf<input id="clicked" size="4" onfocus="this.blur();" onclick="mehrTeile();" value="4">
到类似下面的
<input type="button" value="Eine Zeile hinzufügen" onclick="mehrTeile();" />
现在您没有输入字段,只有一个按钮,您可以使用JavaScript变量来跟踪字段的数量。
function mehrTeile()
{
var dataString = 'von=' + clickCount; // we will increase clickCount later
现在进入脚本的主要部分,ajax。代替complete
,你需要使用success
,如果你使用.html()
,你将总是替换你之前加载的内容。也就是说,如果你更改了一次,想要再次更改,此时它不会保留更改。由于每次只添加一行,因此没有意义,因此.append()
将更明智。
所有这些将导致以下
<form method="GET" name="NeuerLieferschein" action="Teileposten_INSERT.php">
<?PHP
include ("NeuerLieferschein_Teilespalten.php");
?>
<p id="VariableZeilen"></p>
<input type="button" value="Eine Zeile hinzufügen" onclick="mehrTeile();" />
这个JavaScript
var clickCount = 4;
function mehrTeile()
{
var dataString = "von="+clickCount;
$.ajax({
type: "POST",
url: "NeuerLieferschein_Teilespalten.php",
data: dataString,
success: function(msg)
{
$("div#VariableZeilen").append(msg);
clickCount++;
}
});
}
我还建议编辑一下NeuerLieferschein_Teilespalten.php
。name="kunde'.$i.'"
意味着最终你将拥有未知数量的字段,并且无法顺利检查。如果您使用name="kunde[]"
,您将得到一个包含所有元素的数组。
name="kunde'.$i.'"
-> $_POST['kunde1'] = ?
$_POST['kunde2'] = ?
$_POST['kunde3'] = ?
$_POST['kunde4'] = ?
name="kunde[]"
-> $_POST['kunde'] = array(
?,
?,
?,
?,
)
其中?
只保留任何值
在分析了这个问题很长一段时间后,我现在发现,它适用于Mozilla Firefox 20.0.1,但不适用于Internet Explorer 8.0.6,这是我使用的旧windows XP机器的最新版本。我能做些什么来使这个代码也与IE8一起工作吗?是关于PHP和HTML中的表结构还是关于响应本身?
这是我的div在表中的位置:
<tr>
<td colspan=5>
<div id="VariableZeilen" class="VariableZeilen">
<!-- More Lines should appear here -->
</div>
</td>
</tr>
php正在添加更多的表结构,像这样:
for($i=$von; $i < ($bis+1); $i++)
{
echo '<tr>';
echo '<th rowspan="2" align=left>Bezeichnung: <input type="text" ';
echo 'name="Teileposition'.$i.'" id="Teileposition'.$i.'" size="50"></th>';
echo '<th rowspan="2"> Nettopreis: <input type="text" onblur="Calculatenettobrutto('.$i.');"';
echo 'name="Netto'.$i.'" id="Netto'.$i.'" size="3"></th>';
echo '<th rowspan="2">Brutto: <input type="text" ';
echo 'name="Brutto'.$i.'" size="3" id="Brutto'.$i.'"/></th>';
echo '<td>';
//Jetzt den Nachnamen auswählen
require_once("DBFunctions.php");
DBConnect();
$sql="SELECT distinct Nachname, ';' FROM Kunde order by Nachname asc";
$db->SetFetchMode(ADODB_FETCH_NUM);
$Nachnamen=$db->Execute($sql);
echo '<select name="kunde'.$i.'" id="kunde'.$i.'" class="kunde'.$i.'" onclick="selectkunde('.$i.')" >';
echo'<option selected="selected"> </option>';
while (!$Nachnamen->EOF)
{
$Nachnamenzeile=($Nachnamen->fields);
echo'<option value='.$Nachnamenzeile[0].'>'.$Nachnamenzeile[0].'</option>';
$Nachnamen->MoveNext();
}
echo '</select> <br/>';
DBClose();
echo '</td>';
echo '<th rowspan="2">';
echo '<select name="Teilezurodnung" id="Teilezurodnung" size="1">';
echo '<option value="Kunde" selected >Kunde</option>';
echo '<option value="Lager" >Lager</option>';
echo '<option value="Zurück" >Zurück</option>';
echo '<option value="Falsch" >Falsch</option>';
echo '</th>';
echo '<tr><td>';
//Je nach Nachname sollten hier die Autos erscheinen
echo '<select name="auto'.$i.'" class="auto'.$i.'"><option selected="selected">--Wähle das Auto--</option></select>';
echo '</td></tr>';
echo '</tr>';