基于下拉列表,jquery,php创建动态表单字段

时间:2012-01-05 07:16:15

标签: php jquery html

我的表单中有一个下拉列表,实际上有助于根据查询类型动态生成mysql数据库查询。  例如,如果我的查询类型在fetchYourDetails的下拉列表中,那么一个文本框将出现在将要求我的名字的表格中。有一次,我输入我的名字然后点击 generate ,它将构建查询并在后台php中运行它。

像这样,我有大约4/5的查询类型,并且将来可能会增加。这里我的当前实现存在问题。

我目前使用的是:一个表格,我有下拉列表和所有参数字段(隐藏)开始。现在,使用我的js中的onchange()函数,我将根据所选的下拉选项显示一些特定的参数行,并隐藏其余部分。

所以这就是我的HTML代码的样子:

<form>
   <table>
      <tr id='dropdown'>
         <td>
            <select id='select_options' onchange ="javascript:updateCustomQueryFields();">
               <option value='getyourdetails'></option>
               <option value='getyourbikedetails'></option>
               <!-- so on -->
            </select>
         </td>
      </tr>
      <tr style='display:none'>
         <td>
            <!-- one field -->
            <!-- create the generate option -->
         </td>
      </tr>
      <tr style='display:none'>
         <td>
            <!-- one field -->
            <!-- create the generate option -->
         </td>
      </tr>
      <!-- so on -->
   </table>
</form>

和我的onchange函数看起来像:

function updateCustomQueryFields()
{
    val=$('#select_options').val();

    //hideallfieldsfirst

    if(val=='getyourdetails')
    {
        //show one field
    }
    else if(val=='getyourbikedetails')
    {
        //show one field
    }
}

到目前为止一切顺利,现在,当我点击生成选项时,它将执行查询并从数据库中获取数据并将其显示在表单下方的结果div中。

因此,在显示结果时,我必须根据控制器中设置的参数隐藏一些字段并在视图中显示其他字段。 因此,当我们添加更多参数时,一系列 if-else语句也可能会增加。

所以我想要的是我们将动态生成参数字段的一些机制,例如,如果查询类型是'getyourdetails',则只应创建名称字段并且应删除所有字段在后端onchange功能。

那么如何使用jquery实现呢?并且它是一个适当的方法来实现我想要的场景吗?在获取结果后,一旦调用从控制器返回,我必须记住我的参数字段的推测。

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解了您的问题,但至少我对您的请求的了解表明,使用jQuery的removeappend函数更好地制作这些表单。您可以动态创建任何控件,并通过为其设置的ID将其设置为受控制。喝一杯水很容易!

RemoveAppend

如果我的答案错了,请纠正我。