我有页面A和B.一旦页面A加载,我将从用户那里获得输入。 60秒后,页面将自动重定向到页面B.我使用下面的代码,但值没有通过。
<html>
<head>
<script type="text/javascript">
function printVal()
{
printVal.counter--;
document.getElementById("timer").innerHTML = printVal.counter;
if(printVal.counter==0){
window.location="next.php";
}
}
function callfun()
{
setInterval(printVal,1000);
}
printVal.counter=61;
</script>
</head>
<body>
<input type="submit" value="Click Me" onclick="callfun()">
<p id="timer"></p>
<form method='post' action='next.php'>
<input type='text' name='val'>
</form>
</body>
</html>
我要创建一个列表。一旦用户在文本框中键入内容并按下输入,它应该将其添加到列表框中。 60秒后,我希望列表框中的值传递给next.php。
答案 0 :(得分:2)
更改window.location
不会将表单中的值提交到新位置。您必须提交表单。
if(printVal.counter==0)
document.getElementsByTagName("form")[0].submit();
}
答案 1 :(得分:1)
这是一个非常广泛的问题,可以尝试和有效地回答。
让我们从您的列表框开始:您问:once user types something in text box and press enter it should go and add in a list box. and after 60 seconds i want the values in the list box to be passed to next.php
如果用户不对列表框中的(数据)做任何事情,为什么要将数据放在列表框中?所以我想你的想法是使用一个列表框来保存单独的值然后你可以POST到你的next.php。
划定你说的价值?成交。让我们忽略json,ajax等等,并用一些简单的普通的香草javascript“教你如何钓鱼”。我会把模块化给你!
作为html input-element的name-attribute,我们也可以像这样指定一个 array :<input "name=itm[]">
(你也可以在制作'listbox'时这样做,也就是{{1 }})。让我们在列表中很好地显示它们。因此,每当您点击textarea / inputfield中的回车键时,包含inputfield的列表项就会添加到表单中。
当计时器达到零时,您需要使用<select name="var[]" multiple="yes">
提交表单(正如Andreas所指出的那样)。
这是一个简化但完全有效的例子:
form.submit()
当然你可以找到working demo in this fiddle(注意这个演示运行10秒而不是60秒)。
现在你的php脚本<!DOCTYPE html><html><head><title>demo</title>
<script type="text/javascript">
window.onload=function(){
itmLi=document.createElement('li');
itmInp=itmLi.appendChild(document.createElement('input'));
itmInp.type='text';
itmInp.name='val[]';
theItms=document.getElementById('theItems');
fetchItem=function(el,evt){
var itmAct, keyCode=(evt.which) ? evt.which : event.keyCode;
if (keyCode == 13){
itmAct=theItms.appendChild(itmLi.cloneNode(true));
itmAct.firstChild.value=el.value;
el.value='';
return false;
}
};
theTmr=document.getElementById('tmrOut');
myTimer=function(){
var t=Number(theTmr.innerHTML);
if(t){
theTmr.innerHTML=t-1;
window.setTimeout(myTimer,1000);
} else {
theItms.parentNode.submit();
}
};
window.setTimeout(myTimer,1000);
document.getElementById('inpTxt').focus(); //sigh.. firefox does not work AGAIN.
};
</script>
</head><body>
<p>Time left: <span id="tmrOut">60</span></p>
<textarea id="inpTxt" onkeyup="return fetchItem(this,event);"></textarea>
<form id="theForm" method="post" action="next.php">
<ul id="theItems"></ul>
</form>
</body></html>
将收到一个变量:next.php
(正如你已经命名的那样),但是这个变量实际上是一个包含所有项目的数组输入(由enter键分隔)
田田!
由于你只询问如何将变量传递给php,我的答案就在这里停止。如果您在接收php端需要帮助,我建议您先RTM。
祝你好运!!