2013-01-01 62 views
-1

我有許多潛在的輸入框的形式,但我只希望如果下次到以前的輸入框按鈕被點擊它們被顯示出來。這裏是我的意思有點想法:只顯示輸入框,當按鈕被點擊

<form> 
    <input name='box1'><input type='submit' name='button1' value='show box 2'> 
    <input name='box2'><input type='submit' name='button2' value='show box 3'> 
    <input name='box3'><input type='submit' name='button3' value='show box 4'> ....... 

可以這樣用PHP來實現,或者我應該使用JavaScript或其他什麼東西?任何意見將不勝感激。謝謝

+1

我會爲此推薦JavaScript,除非您希望每次單擊按鈕時重新加載頁面。 – Nathan

回答

1

是的,這可以通過PHP來完成,但如果你想它看起來不錯,使用JavaScript。

不管怎麼說,在PHP中一個醜陋的僞解決方案:

$Step = 1; 
if(isset($_POST['step'])) 
    $Step = $_POST['step']; 

switch($Step) { 
    case 2: 
     echo '<input name="box2">'; 
     break; 
    case 3: 
     echo '<input name="box3">'; 
     break; 
    // ... 
    default: 
     echo '<input name="box1">'; 
} 
echo '<input type="hidden" name="step" value="'.($Step + 1).'">'; 
echo '<input type="submit" name="submit" value="Next">'; 

但儘管如此,在JavaScript它看起來更好,更容易實現。

+0

感謝您的PHP代碼,如果JavaScript無法解決,我會使用它 – user1559811

7

我會使用jQuery或純JavaScript來做到這一點。 JavaScript是一種客戶端語言,非常適用於點擊和事件。 PHP是服務器端,用於頁面處理和數據處理。 我會將輸入封裝在div中並隱藏並在點擊中顯示它們。

0

如果你想避免頁面重新加載,你需要使用瀏覽器端JavaScript用於顯示新的輸入框。

如果再需要新的輸入框中顯示了之前由服務器端PHP腳本處理的輸入框中的文字,你將需要按鈕Ajax請求點擊輸入框的數據發送到服務器並獲得響應。

如果您可以處理輸入框文本的瀏覽器雙面,它變得越來越簡單。

在這兩種情況下,您都需要將按鈕的類型屬性submit替換爲button以獲取沒有默認行爲的按鈕。然後,您可以將點擊處理程序添加到按鈕。與jQuery這看起來像下面的代碼片段,如果你不想要處理的文本(把這個表單後):

<script> 
$('input[type^="button"]').click(function() { 
    var button_number = $(this).attr("name").split("button")[1]; 
    var box_number = parseInt(button_number) + 1; 
    $('input[name="box' + box_number + '"]').show(); 
}); 
</script> 

對於能見度的初始化,您可以使用這個CSS:

input[name^="box"] { 
    display:none; 
} 
input[name="box1"] { 
    display:inline; 
} 

這裏是的jsfiddle:http://jsfiddle.net/SjXH9/27/

,你可以讓你的最後一個按鈕提交按鈕,提交整個表單。