Javascript 追加元素don';我不会在提交时出现
我用javascript创建了一个对象,它附加了一个包含5个元素的表。但是,当我提交表单时,添加的字段不会显示Javascript 追加元素don';我不会在提交时出现,javascript,Javascript,我用javascript创建了一个对象,它附加了一个包含5个元素的表。但是,当我提交表单时,添加的字段不会显示 var whenCellOne = firstRow.insertCell(1); this.often = document.createElement("select"); this.often.name = "['"+me.id+"']['often']"; this.often.appendChild(this.createOption("Vecka", "0")); this
var whenCellOne = firstRow.insertCell(1);
this.often = document.createElement("select");
this.often.name = "['"+me.id+"']['often']";
this.often.appendChild(this.createOption("Vecka", "0"));
this.often.appendChild(this.createOption("Månad", "1"));
this.often.onchange = function(){ me.update(); };
whenCellOne.appendChild(this.often);
这就是我创建其中一个元素的方式,我希望它会出现为$\u POST['1a']['frequency']=“0”
,但是变量转储看起来就像数组(1){[“submit”]=>字符串(2)“ok”}
怎么了?我该如何修复它
这是完整的javascript代码,这是测试页面PHP不会使用表单名为
[something]
的字段中的数据填充$\u POST
。您需要更改名称
如果希望$\u POST['1a']['frequency']
有一个值,则需要name=“1a[frequency]”
假设me.id
的值为1a
,您当前将其设置为name=“['1a']['frequency']”
应该是
this.often.name = me.id + "[often]";
您的脚本中也有一些错误,您仍然需要实现Quentin提到的bug修复:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="./system/advancedDate.js"></script>
</head>
<body>
<form action="#" method="POST">
<div id='1a'></div>
<input type="submit" name="submit" value="ok">
</form>
</body>
<footer>
<script type="text/javascript">
window.onload = function(){
var ad = new advancedDate("1a");
ad.appendInElement();
}
</script>
</footer>
</html>
function advancedDate(id){
this.id = id;
this.createDOMElements();
}
advancedDate.prototype.createDOMElements = function(){
var me = this;
this.table = document.createElement("table");
this.table.style.border = "Solid black 3px";
//Create row 1
var firstRow = this.table.insertRow(0);
var secondRow = this.table.insertRow(1);
var thirdRow = this.table.insertRow(2);
var fourthRow = this.table.insertRow(3);
var whenCellOne = firstRow.insertCell(0);
this.repeat = document.createElement("select");
this.repeat.name = "['"+me.id+"']['repeat']";
this.repeat.appendChild(this.createOption("Varje", "0"));
this.repeat.appendChild(this.createOption("Kommande", "1"));
whenCellOne.appendChild(this.repeat);
whenCellOne = firstRow.insertCell(1);
this.often = document.createElement("select");
this.often.name = "["+me.id+"][often]";
this.often.appendChild(this.createOption("Vecka", "0"));
this.often.appendChild(this.createOption("Månad", "1"));
this.often.onchange = function(){ me.update(); };
whenCellOne.appendChild(this.often);
secondRow.insertCell(0);
var dateCell = secondRow.insertCell(1);
this.when = document.createElement("select");
this.when.name = "['"+me.id+"']['when']";
this.when.setAttribute("multiple","true");
this.when.style.width = "300px";
dateCell.appendChild(this.when);
var dayCell = thirdRow.insertCell(0);
dayCell.innerHTML = "Day:";
var dayInputCell = thirdRow.insertCell(1);
this.dayInput = document.createElement("input");
this.dayInput.name = "['"+me.id+"']['when']";
this.dayInput.setAttribute("type", "text");
this.dayInput.onkeyup = function(){ me.update(); };
this.dayInput.onblur = function(){ me.update(); };
dayInputCell.appendChild(this.dayInput);
var workCell = fourthRow.insertCell(0);
workCell.innerHTML = "Arbetstid:";
var workTimeInputCell = fourthRow.insertCell(1);
this.workTimeInput = document.createElement("input");
this.workTimeInput.name = "['"+me.id+"']['workTime']";
this.workTimeInput.setAttribute("type", "text");
this.workTimeInput.onkeyup = function(){ me.calculateTime(this); };
this.workTimeInput.onblur = function(){ me.calculateTime(this); };
workTimeInputCell.appendChild(this.workTimeInput);
this.update();
};
advancedDate.prototype.createOption = function(text, value){
var e = document.createElement("option");
e.setAttribute("value",value);
e.innerHTML = text;
return e;
};
advancedDate.prototype.calculateTime = function(element){
var pattern = /([0-9]{2}):([0-9]{2})([^0-9]+)([0-9]{2}):([0-9]{2})/g;
if(element.value.match(pattern)){
var result = pattern.exec(element.value);
var time1 = (parseInt(result[1]) * 3600) + (parseInt(result[2]) * 60);
var time2 = (parseInt(result[4]) * 3600) + (parseInt(result[5]) * 60);
var max = Math.max(time1, time2);
var min = Math.min(time1, time2);
var time = max-min;
element.value = Number((time/3600).toFixed(2));
}
};
advancedDate.prototype.update = function(){
var currentDay;
try{
currentDay = parseInt(this.dayInput.value);
}catch(err){
currentDay = -1;
}
var d = new Date();
var month = d.getMonth();
var year = parseInt(d.getFullYear())+1;
var day = d.getDate();
var months = [
["01, Januari", "January", 0],
["02, Februari", "February", 1],
["03, Mars", "March", 2],
["04, April", "April", 3],
["05, Maj", "May", 4],
["06, Juni", "June", 5],
["07, Juli", "July", 6],
["08, Augusti", "August", 7],
["09, September", "September", 8],
["10, Oktober", "October", 9],
["11, November", "November", 10],
["12, December", "December", 11]];
var weeks = [
["Måndag", "Monday" ],
["Tisdag", "Tuesday" ],
["Onsdag", "Wednesday" ],
["Torsdag", "Thursday" ],
["Fredag", "Friday" ],
["Lördag", "Saturday" ],
["Söndag", "Sunday" ]];
//Save the selected values
var selected = [];
try{
for(var i=0; i<this.when.options.length; i++){
if(this.when.options[i].selected)
selected.push(this.when.options[i].value);
}
}catch(err){
}
if(this.often.value === "0"){
this.when.options.length = 0;
for(var x=0; x<weeks.length; x++)
this.when.appendChild(this.createOption(weeks[x][0], weeks[x][1]));
//Make extra invisable
this.table.rows[2].style.display = 'none';
this.dayInput.value = "";
}
if(this.often.value === "1"){
this.when.options.length = 0;
for(var y=0; y<months.length; y++)
this.when.appendChild(
this.createOption(
((month > months[y][2] || (month === months[y][2] && currentDay < day)) ? year+ "-" : "") + months[y][0], months[y][1]));
this.table.rows[2].style.display = 'table-row';
}
//Load selected again
for(var z=0; z<this.when.options.length; z++){
for(var j=0; j<selected.length; j++){
if(this.when.options[z].value === selected[j]){
this.when.options[z].selected="selected"; break;
}
}
}
//Dynamic height
this.when.size = this.when.options.length;
};
advancedDate.prototype.appendInElement = function(){
var e = document.getElementById(this.id);
e.appendChild(this.table);
};
window.onload=函数(){
var ad=新的预付款日期(“1a”);
ad.附加物();
}
函数advancedDate(id){
this.id=id;
this.createdElements();
}
advancedDate.prototype.CreatedElements=函数(){
var me=这个;
this.table=document.createElement(“表”);
this.table.style.border=“纯黑3px”;
//创建第1行
var firstRow=this.table.insertRow(0);
var secondRow=this.table.insertRow(1);
var thirdRow=this.table.insertRow(2);
var fourthRow=this.table.insertRow(3);
var whenCellOne=第一行插入单元(0);
this.repeat=document.createElement(“选择”);
this.repeat.name=“['”+me.id+“]['repeat']”;
this.repeat.appendChild(this.createOption(“Varje”,“0”));
this.repeat.appendChild(this.createOption(“Kommande”,“1”));
whenCellOne.appendChild(this.repeat);
当cellone=firstRow.insertCell(1);
this.frequency=document.createElement(“选择”);
this.frequency.name=“[”+me.id+“][frequency]”;
this.frequency.appendChild(this.createOption(“Vecka”,“0”));
this.frequency.appendChild(this.createOption(“Månad”,“1”));
this.frequency.onchange=函数(){me.update();};
whenCellOne.appendChild(这个经常);
第二行插入单元(0);
var dateCell=secondRow.insertCell(1);
this.when=document.createElement(“选择”);
this.when.name=“['”+me.id+“]['when']”;
此.when.setAttribute(“多个”、“真”);
this.when.style.width=“300px”;
dateCell.appendChild(this.when);
var dayCell=thirdRow.insertCell(0);
dayCell.innerHTML=“天:”;
var dayInputCell=thirdRow.insertCell(1);
this.dayInput=document.createElement(“输入”);
this.dayInput.name=“['”+me.id+“]['when']”;
this.dayInput.setAttribute(“类型”、“文本”);
this.dayInput.onkeyup=函数(){me.update();};
this.dayInput.onblur=函数(){me.update();};
appendChild(this.dayInput);
var workCell=fourthRow.insertCell(0);
workCell.innerHTML=“Arbetstid:”;
var workTimeInputCell=fourthRow.insertCell(1);
this.workTimeInput=document.createElement(“输入”);
this.workTimeInput.name=“['”+me.id+“]['workTime']”;
this.workTimeInput.setAttribute(“type”、“text”);
this.workTimeInput.onkeyup=函数(){me.calculateTime(this);};
this.workTimeInput.onblur=function(){me.calculateTime(this);};
workTimeInputCell.appendChild(this.workTimeInput);
这个.update();
};
advancedDate.prototype.createOption=函数(文本,值){
var e=document.createElement(“选项”);
e、 setAttribute(“值”,值);
e、 innerHTML=文本;
返回e;
};
advancedDate.prototype.calculateTime=函数(元素){
var模式=/([0-9]{2}):([0-9]{2})([^0-9]+)([0-9]{2}):([0-9]{2})/g;
if(元素值匹配(模式)){
var result=pattern.exec(element.value);
var time1=(parseInt(结果[1])*3600)+(parseInt(结果[2])*60);
var time2=(parseInt(结果[4])*3600)+(parseInt(结果[5])*60);
var max=Math.max(time1,time2);
var min=Math.min(time1,time2);
var时间=最大最小值;
element.value=编号((时间/3600).toFixed(2));
}
};
advancedDate.prototype.update=函数(){
var当前日期;
试一试{
currentDay=parseInt(this.dayInput.value);
}捕捉(错误){
currentDay=-1;
}
var d=新日期();
var month=d.getMonth();
var year=parseInt(d.getFullYear())+1;
var day=d.getDate();
风险值月份=[
[“01,1月”,“1月”,0],
[“2月2日”、“2月1日],
[“03,火星”,“三月”,2],
[“4月4日”、“4月3日],
[“05,Maj”,“May”,4],
[“06,Juni”,“June”,5],
[“07,朱莉”,“7月”,6日],
[“08,Augusti”,“August”,7],
[“9月9日”、“9月8日],
[“10,Oktober”,“10月”,9日],
[“11月11日”、“11月10日],
[“12月12日”、“12月11日];
var周=[
[“Måndag”,“星期一”],
[“Tisdag”,“星期二”],
[“Onsdag”,“周三”],
[“托尔斯达克”,“星期四”],
[“Fredag”,“Friday”],
[“勒达格”,“星期六”],
[“Söndag”、“Sunday”];
//保存选定的值
所选var=[];
试一试{
对于(var i=0;i什么是“this”,发布更多代码。解释更多您可以检查表单以查看select元素是否添加到it@Legends“this”和“me”指的是JavaScript对象,我在整个代码中添加了pastebin链接
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="./system/advancedDate.js"></script>
</head>
<body>
<form action="#" method="POST">
<div id='1a'></div>
<input type="submit" name="submit" value="ok">
</form>
</body>
<footer>
<script type="text/javascript">
window.onload = function(){
var ad = new advancedDate("1a");
ad.appendInElement();
}
</script>
</footer>
</html>
function advancedDate(id){
this.id = id;
this.createDOMElements();
}
advancedDate.prototype.createDOMElements = function(){
var me = this;
this.table = document.createElement("table");
this.table.style.border = "Solid black 3px";
//Create row 1
var firstRow = this.table.insertRow(0);
var secondRow = this.table.insertRow(1);
var thirdRow = this.table.insertRow(2);
var fourthRow = this.table.insertRow(3);
var whenCellOne = firstRow.insertCell(0);
this.repeat = document.createElement("select");
this.repeat.name = "['"+me.id+"']['repeat']";
this.repeat.appendChild(this.createOption("Varje", "0"));
this.repeat.appendChild(this.createOption("Kommande", "1"));
whenCellOne.appendChild(this.repeat);
whenCellOne = firstRow.insertCell(1);
this.often = document.createElement("select");
this.often.name = "["+me.id+"][often]";
this.often.appendChild(this.createOption("Vecka", "0"));
this.often.appendChild(this.createOption("Månad", "1"));
this.often.onchange = function(){ me.update(); };
whenCellOne.appendChild(this.often);
secondRow.insertCell(0);
var dateCell = secondRow.insertCell(1);
this.when = document.createElement("select");
this.when.name = "['"+me.id+"']['when']";
this.when.setAttribute("multiple","true");
this.when.style.width = "300px";
dateCell.appendChild(this.when);
var dayCell = thirdRow.insertCell(0);
dayCell.innerHTML = "Day:";
var dayInputCell = thirdRow.insertCell(1);
this.dayInput = document.createElement("input");
this.dayInput.name = "['"+me.id+"']['when']";
this.dayInput.setAttribute("type", "text");
this.dayInput.onkeyup = function(){ me.update(); };
this.dayInput.onblur = function(){ me.update(); };
dayInputCell.appendChild(this.dayInput);
var workCell = fourthRow.insertCell(0);
workCell.innerHTML = "Arbetstid:";
var workTimeInputCell = fourthRow.insertCell(1);
this.workTimeInput = document.createElement("input");
this.workTimeInput.name = "['"+me.id+"']['workTime']";
this.workTimeInput.setAttribute("type", "text");
this.workTimeInput.onkeyup = function(){ me.calculateTime(this); };
this.workTimeInput.onblur = function(){ me.calculateTime(this); };
workTimeInputCell.appendChild(this.workTimeInput);
this.update();
};
advancedDate.prototype.createOption = function(text, value){
var e = document.createElement("option");
e.setAttribute("value",value);
e.innerHTML = text;
return e;
};
advancedDate.prototype.calculateTime = function(element){
var pattern = /([0-9]{2}):([0-9]{2})([^0-9]+)([0-9]{2}):([0-9]{2})/g;
if(element.value.match(pattern)){
var result = pattern.exec(element.value);
var time1 = (parseInt(result[1]) * 3600) + (parseInt(result[2]) * 60);
var time2 = (parseInt(result[4]) * 3600) + (parseInt(result[5]) * 60);
var max = Math.max(time1, time2);
var min = Math.min(time1, time2);
var time = max-min;
element.value = Number((time/3600).toFixed(2));
}
};
advancedDate.prototype.update = function(){
var currentDay;
try{
currentDay = parseInt(this.dayInput.value);
}catch(err){
currentDay = -1;
}
var d = new Date();
var month = d.getMonth();
var year = parseInt(d.getFullYear())+1;
var day = d.getDate();
var months = [
["01, Januari", "January", 0],
["02, Februari", "February", 1],
["03, Mars", "March", 2],
["04, April", "April", 3],
["05, Maj", "May", 4],
["06, Juni", "June", 5],
["07, Juli", "July", 6],
["08, Augusti", "August", 7],
["09, September", "September", 8],
["10, Oktober", "October", 9],
["11, November", "November", 10],
["12, December", "December", 11]];
var weeks = [
["Måndag", "Monday" ],
["Tisdag", "Tuesday" ],
["Onsdag", "Wednesday" ],
["Torsdag", "Thursday" ],
["Fredag", "Friday" ],
["Lördag", "Saturday" ],
["Söndag", "Sunday" ]];
//Save the selected values
var selected = [];
try{
for(var i=0; i<this.when.options.length; i++){
if(this.when.options[i].selected)
selected.push(this.when.options[i].value);
}
}catch(err){
}
if(this.often.value === "0"){
this.when.options.length = 0;
for(var x=0; x<weeks.length; x++)
this.when.appendChild(this.createOption(weeks[x][0], weeks[x][1]));
//Make extra invisable
this.table.rows[2].style.display = 'none';
this.dayInput.value = "";
}
if(this.often.value === "1"){
this.when.options.length = 0;
for(var y=0; y<months.length; y++)
this.when.appendChild(
this.createOption(
((month > months[y][2] || (month === months[y][2] && currentDay < day)) ? year+ "-" : "") + months[y][0], months[y][1]));
this.table.rows[2].style.display = 'table-row';
}
//Load selected again
for(var z=0; z<this.when.options.length; z++){
for(var j=0; j<selected.length; j++){
if(this.when.options[z].value === selected[j]){
this.when.options[z].selected="selected"; break;
}
}
}
//Dynamic height
this.when.size = this.when.options.length;
};
advancedDate.prototype.appendInElement = function(){
var e = document.getElementById(this.id);
e.appendChild(this.table);
};