2012-08-04 71 views
0

嗨我有一個頁面,其中包含幾種不同的形式,所有這些都顯示/隱藏在適當的按鈕的按下。PHP表單和相同的名稱

現在他們都需要包含一些由php從數據庫中檢索的字段,但問題是我的jQuery代碼然後未能隱藏稍後聲明的字段。

繼承人我的代碼示例:

<form action="controlPanel.php" method="post"> 
    <input class="inputFields" type="text" name="fileName" /> 
    <input class="inputFields" type="text" name="fname" /> 
    <select class="styled-select" id="nameDropdown" name='nameDropdown'> 
    <option value="0"><span class="formatFreeTxt">Choose a name</span></option> 
    <?php 
     foreach ($GLOBALS['myDB']->getList('2') as $i) { 
      echo "<option value='" . $i['email'] . "'>" . $i['fname'] . " " . $i['lname'] . "</option>"; 
     } 
    ?> 
    </select> 
    <input class="inputFields" type="submit" name="textForm" /> 
</form> 

然後,我對上面下的DIV另一種形式。這樣的:

<form action="controlPanel.php" method="post"> 
    <input class="inputFields" type="text" name="textName" /> 
    <input class="inputFields" type="text" name="lname" /> 
    <select class="styled-select" id="nameDropdown" name='nameDropdown'> 
    <option value="0"><span class="formatFreeTxt">Choose a name</span></option> 
    <?php 
     foreach ($GLOBALS['myDB']->getList('2') as $i) { 
      echo "<option value='" . $i['email'] . "'>" . $i['fname'] . " " . $i['lname'] . "</option>"; 
     } 
    ?> 
    </select> 
    <input class="inputFields" type="submit" name="nextTxtForm" /> 
</form> 

我jQuery代碼是:

function showHideBenef() 
{ 
     if($('#nameDropdown').is(':visible')) 
     { 
      $('#nameDropdown').fadeOut(); 
      $('#nameTable').fadeIn(); 
      $('#toggleButton').attr('value', 'Choose from existing ones'); 
      $('#chooseTxt').html('New Beneficiary Form'); 

     } 
     else 
     { 
      $('#nameDropdown').fadeIn(); 
      $('#nameTable').fadeOut(); 
      $('#toggleButton').attr('value', 'OR Add a new one'); 
     } 

    } 

有什麼辦法,使這項工作在不改變每個字段的名稱,以便我能真正抓住不同的職位,而不需要檢查所有不同的字段名稱?

+0

JQuery代碼在哪裏? – Samson 2012-08-04 14:23:54

+0

@radashk我剛剛添加了JQuery代碼 – mixkat 2012-08-04 14:33:58

回答

1

擺脫所有的區分重複id屬性值,然後你可以使用name屬性值:

function showHideBenef() { 

    var nameDropdown = $('[name="nameDropdown"]'); 

    if (nameDropdown.is(':visible')) { 

    nameDropdown.fadeOut(); 

    // Not sure what the following elements are, might need to use 
    // `name` attr or classes to select them. 

    $('#nameTable').fadeIn(); 

    $('#toggleButton').attr('value', 'Choose from existing ones'); 

    $('#chooseTxt').html('New Beneficiary Form'); 

    } 


    else { 

    nameDropdown.fadeIn(); 

    $('#nameTable').fadeOut(); 

    $('#toggleButton').attr('value', 'OR Add a new one'); 

    } 

} 
// showHideBenef 
0

只給每個表單一個唯一的id屬性。

0

我覺得一套id屬性

這樣

<form action="controlPanel.php" method="post" id="form1"> 

<form action="controlPanel.php" method="post" id="form2"> 
1

這裏的問題是你有相同的ID &名稱這是不好的多個輸入元素。

爲什麼不把它們作爲數組?

所以在Form1元素將

<input type="text" name="firstform[fname]" id="firstform_fname"/> 

,並在窗口2中的元素將

<input type="text" name="secondform[fname]" id="secondform_fname"/> 
在PHP腳本

,你可以從$ _POST ['firstform得到的形式值']和$ _POST ['secondform']

0

您可以給每個輸入一個ID屬性,並使用jQuery根據ID隱藏/顯示。

使用前綴的ID,所以你可以輸入諸如ID =「textFormFileName」和id =「nextTxtFormFileName」

0

確定其可能不是最佳的解決方案,但我結束了在一個div元素包裝的一切,然後我使用jQuery隱藏整個DIV ......這樣我可以有不同的名稱重複不斷形式和jQuery的工作正常,只要你給divs一個不同的ID ..

謝謝大家的回答!

+0

重複的'name'屬性值沒有問題。重複的'id'屬性值是無效的HTML,並會導致各種問題。 – JMM 2012-08-04 16:06:20

+0

@JMM是的我知道,但我只需要名稱屬性,以便我可以參考它,當我趕上後在PHP中:) – mixkat 2012-08-04 16:53:54

相關問題