2012-10-24 30 views
1

我正在尝试为表单添加一些“下一个”和“后退”按钮。想法是将填写过程分成几个步骤,并用这些按钮,当前步骤的div被隐藏,然后进行下一步。显示上一步。rails 3 - 添加一个不会提交表单的按钮

我的问题是,当我添加按钮以下列方式...

<button class="proceed_button" id="loan_information">Proceed</button> 
<button class="cancel_button" id="loan_information">Cancel</button> 

...他们提交表单。 表单标签中的每个按钮都被认为是提交按钮吗? 如果是这样,我该如何改变这种行为? 如果不是,他们为什么这么做呢?

回答

0

好的,解决方法是按钮需要一个类型。

<button type="button" class="proceed_button" id="loan_information">Proceed</button> 
<button type="button" class="cancel_button" id="loan_information">Cancel</button> 

像这样,它不会再提交表单了。

根据http://w3schools.com/html5/att_button_type.asp默认类型取决于浏览器,所以你应该总是指定类型。

1

我不确定你想要一个按钮,也许你想要它看起来就像一个按钮。无论哪种方式,参考这篇文章:rails 3: display link as button?

一旦你有你的按钮,你需要更新你的javascript,以防止点击时发生任何事情(假设你有jQuery)。它还是不错的,为没有JS这些恐龙提供了一个真正的回落,所以假设你继续为用户按钮提交无JS,对于那些JS你会做这样的事情:

$('#proceed_button').click(function(e) { e.preventDefault(); // Show and hide your divs here }); 

还要注意的是,在你的发布代码你不应该有两个相同的ID按钮,你的id和类看起来交换。

+0

感谢您的回答。我找到了一个解决方案,这非常简单。由于我的名誉点有限,我无法添加它。我现在将添加它。感谢与id和类的建议。 – user1656427

+0

这个想法使得id和class交换变得很重要,就是所有的proceed按钮在onClick上都得到了相同的功能,并且找出了哪些按钮被点击了(或者哪个步骤更加精确),我访问了id与$(this).attr('id')。所有同班同学接受相同的行为。我总是认为身份证在某种程度上是上课的“孩子”。班级号。你知道我的意思? – user1656427

+0

虽然这是不正确的,ids应该是唯一的,类可以共享。这是无效的HTML和XHTML重复ID。 http://www.w3schools.com/tags/att_global_id.asp你可以很容易地使用jquery的类名 - '$('。className')。click()' – agmin

相关问题