2012-08-04 48 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

相关问题