【问题标题】:Jquery question: How can I break up a multi-part form so that only one fieldset is visible at a time?Jquery 问题:如何分解多部分表单,以便一次只能看到一个字段集?
【发布时间】:2009-03-04 18:41:23
【问题描述】:

我牢牢掌握 XHTML 和 CSS,但 PHP 和 Javascript 对我来说就像魔法一样。

我正在使用基于 PHP 的Textpattern CMS 构建一个讨论站点。用户登录后,可以使用公共端表单添加新的讨论主题。有很多输入字段,由单个 form 元素中的 HTML fieldset 元素分组,该元素将新行添加到特定的数据库表。我想做的是一次只显示一个字段集,插入上一个下一个链接,让人们可以在字段集

Textpattern 与 jquery 捆绑在一起,我找到了 jquery plugin that describes this functionality。但我无法让它工作。

这是我在文档head 中的内容:

<style type="text/css" media="screen">
    fieldset {display: none;}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
<script type="text/javascript" src="http://site.url/scripts/jquery.babysteps-0.2.1.js"></script>
<script type="text/javascript" language="javascript">
    $('#step1').bindStep('#step2');
    $('#step2').bindStep('#step3');

    $('#step1').show();
</script>

我的表格是这样的:

<fieldset id="step1">
    <legend>Step 1 Fields</legend>
    <!-- fields -->
</fieldset>
<fieldset id="step2">
    <legend>Step 2 Fields</legend>
    <!-- fields -->
</fieldset>
<fieldset id="step3">
    <legend>Step 3 Fields</legend>
    <!-- fields -->
</fieldset>
<input type="submit" value="Post this Article!" />

结果是style 声明隐藏了每个 fieldset,但脚本根本没有显示step1。我已经仔细检查了所有文件路径,并使用本地 jquery 包的链接而不是 Google 版本的链接进行了尝试,但我得到了相同的结果。

如果我能做到这一点,我会很高兴,但如果有另一种方法可以在没有 babysteps 插件的情况下实现这一点,我也会对这个结果感到满意。

您能提供的任何指导或具体建议将不胜感激!分步说明或实用的故障排除问题(您的计算机是否已接通电源?)也可能会有所帮助。

提前致谢!

【问题讨论】:

  • @Rich B 正如你在这里看到的那样,当你删除这样的东西时,ppl会生气:p

标签: javascript jquery jquery-plugins webforms


【解决方案1】:

我不确定那个特定的插件,但只有 jquery:

$(function(){

    $('#gotoStep2').click(function(){
        $('#step1').hide();
        $('#step2').show();
        return false;
    });

});

你在哪里

<input type="button" id="gotoStep2" value="next &raquo;"/>

在步骤 1 中

还有你的 CSS:

#step2, #step3 //etc
{
    display: none;
}

我相信你可以弄清楚如何在你的所有步骤中重复这个:)

【讨论】:

  • 太棒了,谢谢!当您说“我确定您可以计算出如何在所有步骤中重复此操作”时,我感到怀疑,但您是对的!您的示例为我提供了使 Next 和 Previous 按钮正常工作所需的条件。
  • ;) 告诉你。最好的学习方法是简单地陷入困境。顺便说一下 $(function(){ //code here }); bit 确保 javascript 仅在页面完成加载后运行。你总是希望你的 jquery 在里面。
【解决方案2】:
<script type="text/javascript" language="javascript">
  $(function(){
    $("#step1").bindStep("#step2");
    $("#step2").bindStep("#step3");

    $("#step1").show();
  });
</script>

如果这不起作用,请放弃该插件。 (说真的,甚至该页面上的演示都不起作用。)

【讨论】:

  • -1 为 . (说真的,甚至该页面上的演示都不起作用。)因为它有效
  • 确实,我根本无法让插件正常工作。谢谢你!
  • fmsf:我们在做同样的事情吗?我指的是指向 vokle.com/open-source/examples/babysteps/index.html 的演示链接。使用 Chrome,该演示不起作用。 (单击按钮时,会显示第 1 步,但没有下一步按钮。)
  • 我在 Safari 中得到与 svinto 相同的结果。
  • 新的 safari 似乎有一些 jquery 的问题,我注意到了
猜你喜欢
  • 1970-01-01
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
相关资源
最近更新 更多