2011-07-20 81 views
1

我试图做到这一点,当你点击一个按钮,它会添加新的字段到页面。我知道onclick只能使用JS函数,所以我决定尝试运行一个JS脚本。起初我曾试图做在php代码中使用JS变量?

<html> 
<head><title>multiple line test</title><head> 
<body> 
<script type="text/javascript"> 
var texters=''; 
var num=0; 
function newInput(nomnom) 
{ 
    texters=''; 
    num=nomnom+1; 
    for (var i=0; i<nomnom; i++) 
    { 
     texters+='<p>\ 
     Please specify a file, or a set of files:<br>\ 
     <input type="file" size="40">\ 
     </p>\ 
     <p>\ 
     Caption : <br> \ 
     <input type="text" size="30">\ 
     </p>';\ 
    } 
    document.write(texters+'<div>\ 
    <input type="submit" value="Send">\ 
    </div>\ 
    </form>\ 
    <br>' + '<input type="button" value="new entry" onclick="newInput(num)">' . '</body></html>'); 
} 
newInput(num); 
</script> 
</body> 
</html> 

但这并没有奏效。所以我试着添加一点点的php,我知道它更好。我尝试这样做:

<html> 
<head><title>multiple line test</title><head> 
<body> 
<script type="text/javascript"> 
var texters=''; 
var num=0; 
function newInput(nomnom) 
{ 
    document.write(<?php 
    tex=''; 
    for (var i=0; i<=(nomnom); i++) 
    { 
     tex.='<p> 
     Please specify a file, or a set of files:<br> 
     <input type="file" size="40"> 
     </p> 
     <p> 
     Caption : <br> 
     <input type="text" size="30"> 
     </p>'; 
    } 
    echo tex . '<div> 
    <input type="submit" value="Send"> 
    </div> 
    </form> 
    <br>' . '<input type="button" value="new entry" onclick="newInput(num)">' . '</body></html>'; 
?>); 
} 
newInput(num); 
</script> 
</body> 
</html> 

但我知道这是行不通的,因为我不能让我使用的字段数使用了JS,进入PHP变量。有没有什么办法可以强制JS将这个数字放在$ _POST中,这样我就可以在不必制作其他表单的情况下检索它?还是有更好的方法来做我想做的事情?

+3

PHP在服务器上运行。 JavaScript在浏览器中运行。理解这是什么意思,然后从JS代码中解开PHP代码。 –

+1

@MattBall:这通常是我对这些类型问题的回应,但OP对$ _POST的引用使我相信它们实际上使用了回发。不过,这个问题有点不清楚。 –

回答

1

由于评论PHP是服务器端,JavaScript为客户端。 HTML是可以创建的UI元素。如果您需要在服务器上完成某些操作,请使用PHP进行操作,如果需要在客户端上完成,请使用javascript。这里是你的一个javascript样例。

function newInput(nomnom) 
{ 
    var tex=''; 
    for (var i=0; i<=(nomnom); i++) 
    { 
    tex+='<p>Please specify a file, or a set of files:'; 
    tex+='<br/><input type="file" size="40"></p>'; 
    tex+='<p>Caption :'; 
    tex+='<br/><input type="text" size="30"></p>'; 
    } 
    document.getElementById('form_id').innerHTML += tex; 
} 

当这个函数被调用,它会创建一些新的投入,并将其添加到id为“form_id”的形式。

+1

不要忘记var tex变量,否则它会在全局范围内结束。 – bittersweetryan

+0

谢谢你的工作,对不起,这是我用JS做的第一件事。 – SDuke

+0

关于“var” – aepheus

2

你可以在表单上设置一个隐藏的输入字段,并用Javascript填充它。

2

您应该尝试使用jquery http://jquery.com/或simialr脚本库,因为它会使操纵DOM变得更容易。使用jQuery你可以创建一个onClick功能,会做你的几行代码想要的东西:

var onClickAddInput = function() 
{ 
    $('div#your_div_id').append('<input type="text" size="30" />'); 
} 

如果你需要添加你可以循环追加语句的更多的输入框,并给单个输入框ID的等于循环数。