这是一个相当广泛的问题,可以尝试并有效地回答。
让我们从你的列表框开始:你问: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
如果用户不会对列表框(其中的数据)做任何事情,为什么要将数据放在列表框中?所以我猜你的想法是使用一个列表框来保存单独的值,然后你可以发布到你的 next.php。
划定价值的你说?成交。让我们忽略 json、ajax 等,用一些简单的普通 javascript来“教你如何钓鱼” 。我将把模块化留给你!
作为 html 输入元素的名称属性,我们还可以像这样指定一个数组<input "name=itm[]">
:(在制作“列表框”时也可以这样做<select name="var[]" multiple="yes">
)。让我们在列表中很好地显示它们。因此,每当您在 textarea/inputfield 中按回车键时,都会将包含输入字段的列表项添加到表单中。
当计时器达到零时,您需要使用提交表单form.submit()
(正如 Andreas 还指出的那样)。
这里有一个简化但完全有效的示例:
<!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>
当然,您可以在这个 fiddle 中找到一个工作演示(请注意,这个演示运行 10 秒而不是 60 秒)。
现在您的 php-scriptnext.php
将收到一个变量:val
正如您已经命名的那样),但这个变量实际上是一个包含所有输入项的数组(由 enter 键分隔)。
多田!
由于您只询问如何将变量传递给 php,因此我的回答就停在这里。如果您在接收 php 方面需要帮助,我建议您先RTM。
祝你好运!!