2011-07-20 80 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的等於循環數。