Javascript创建的表单发送空值
我正在创建一个HTML表格,我希望它是可编辑的。所以我创建了如下javascript:Javascript创建的表单发送空值,javascript,php,html,forms,Javascript,Php,Html,Forms,我正在创建一个HTML表格,我希望它是可编辑的。所以我创建了如下javascript: <script> var buttons = document.getElementsByClassName("clicker"); var buttonclicked = function(e){ if(e.target.textContent == "Edit") { e.target.textCont
<script>
var buttons = document.getElementsByClassName("clicker");
var buttonclicked = function(e){
if(e.target.textContent == "Edit")
{
e.target.textContent = "Cancel";
var id = e.target.id;
var table = document.getElementById("tr"+id);
var editable_elements = document.querySelectorAll("[contenteditable=false]");
var sub = document.getElementById("sub"+id);
var f = document.createElement("form");
f.setAttribute('method',"post");
f.setAttribute('action',"edit.php");
table.appendChild(f);
var j = document.createElement("input");
j.setAttribute("type", "text");
j.setAttribute("name", "subject");
j.setAttribute("value", sub.textContent);
j.setAttribute("placeholder", sub.textContent);
j.setAttribute("disabled", true);
j.setAttribute("style", "width: 150px");
j.textContent = sub.textContent;
sub.innerHTML = "";
f.appendChild(j);
sub.appendChild(j);
for(var k = (id*6); k < (id*6)+6; k++){
var l = k;
var index = k -(k*id) + 1;
l = document.createElement("input");
l.setAttribute('type',"number");
l.setAttribute("style", "width: 75px");
l.setAttribute("step", "0.01");
if(index <= 4){
l.setAttribute('name',"g"+index);
l.setAttribute('placeholder',"G"+index);
l.setAttribute("value", editable_elements[k].textContent);
}
else if(index == 5){
l.setAttribute('name',"creditos");
l.setAttribute('placeholder',"credits");
l.setAttribute("value", editable_elements[k].textContent);
}
else if(index == 6){
l.setAttribute('name',"criteria");
l.setAttribute('placeholder',"criteria");
l.setAttribute("value", editable_elements[k].textContent);
}
editable_elements[k].innerHTML = "";
f.appendChild(l);
editable_elements[k].appendChild(l);}
var s = document.createElement("button");
s.textContent = "Save";
s.setAttribute('type',"submit");
s.setAttribute('value',"update");
s.setAttribute("id", id);
s.setAttribute("name", "action");
var clickbutton = document.getElementById("save"+id);
f.appendChild(s);
}
else //save button has been clicked
{
//nothing
}
};
for(var j = 0; j < buttons.length; j++)
{
buttons[j].addEventListener('click', buttonclicked);
}
</script>
你真的想在
if($\u POST['action']==“update”])
中做一个数组[“update”]
,而不是一个字符串“update”
->如果($\u POST['action']==“update”)
?这行是怎么回事<代码>$\u POST['action']==[“update”]。你也试过像var\u dump($\u POST)
在edit.php
的第一行,我的意思是发布一个数组。(表中这些框内的所有值)。我之所以把这一行放在那里,是因为我有另一个表单,可以在其中编辑或删除表中的内容。因此,我用一个name操作和一个value update设置edit按钮,用一个name操作和一个value delete设置delete按钮,所以在检查server request method==post之后,我检查按下了哪个按钮。如果您查看我的脚本,您将看到我创建了一个带有名称操作和值更新的按钮。var_dump($\u POST)向我显示,正在传递的数组只是一个按钮:array(size=1)'action'=>string'update'(length=6)
,这是wierd,因为如果我使用另一个表单提交到同一页面,我会得到这个:array(大小=8)'subject'=>字符串'foo'(长度=3)'g1'=>字符串'1'(长度=1)'g2'=>字符串'2'(长度=1)'g3'=>字符串'3'(长度=1)'g4'=>字符串'4'(长度=1)'creditos'=>字符串'4'(长度=1)标准'=>字符串'4'(长度=1)'action'=>字符串'update'(长度=6)
我理解为什么,这是因为这几行代码:`sub.appendChild(j);
editable_元素[k]。appendChild(l)
添加到表单后,我将从表单中删除输入。问题是,如果我删除这些行,我无法选择输入的位置,它们将保持这样:除了表行,而不是在表行中
else if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if($_POST['action'] == ["update"])
{
//validate submission
if(empty($_POST["subject"]))
apologize("You must provide what subject to change");
...
}
...
}