如何在咖啡脚本中识别提交按钮,Rails 3应用程序
How to id a submit button in coffeescript, Rails 3 app?
我有一个多步骤表单,我使用本教程在 rails 3 中设置了它:http://railscasts.com/episodes/217-multistep-forms
我可以通过分别单击"继续"和"返回"提交按钮来进入表单中的下一步和上一步。
我已经通过表单最后一页上的 Stripe 插入了一个付款表单,这需要在 coffeescript 中使用以下 jQuery:
视频.js.咖啡
jQuery ->
Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'))
video.setupForm()
video =
setupForm: ->
$('#new_video').submit ->
if $('#card_number').length
video.processCard()
false
else
true
这就是我遇到的问题。除了"后退"按钮之外,表单最后一页的所有内容都可以正常工作,就像我单击"继续"一样。这显然是因为jQuery引用了表单上的所有".submit"按钮。
我想为表单最后一页上的"继续"提交按钮分配一个 id"#uploadsubmit",以便我可以再次使用后退按钮。如何在 jQuery coffeescript 中引用此 ID?
说jQuery引用了所有的按钮,而是它绑定到表单的submit
事件。 如果您专门标识了继续按钮并在那里添加了您的卡处理,您将错过通过其他方式(例如按"输入"按钮)触发的表单提交。
您需要能够做的是确定单击了哪个提交按钮。 有一些方法可以在没有jQuery的情况下做到这一点,但它们对跨浏览器不友好。 但是,您可以使用jQuery轻松地做到这一点,方法是标记单击的按钮,例如通过添加类。
$('#new_video input:submit').click ->
$(this).addClass('wasclicked')
$('#new_video').submit ->
clickedBtn = $(this).find('.wasclicked')
if clickedBtn.attr('name') !== 'back_button' && $('#card_number').length
video.processCard()
clickedBtn.removeClass('wasclicked')
false
else
true
因此,当单击按钮时,它会标记为.wasclicked
类。 提交时,将找到该按钮,如果不是后退按钮,则可以继续处理该卡。 然后删除"wasclicked"按钮(以防信用卡处理失败等)。
您也可以只存储单击的名称并避免使用类,这样的事情应该可以工作:
clickedName = null
$('#new_video input:submit').click ->
clickedName = $(this).attr('name')
$('#new_video').submit ->
if clickedName !== 'back_button' && $('#card_number').length
video.processCard()
clickedName = null
false
else
true
- Rails-带有单选按钮的表单,带有启用/禁用附加元素的javascript操作
- 按钮,用于更改Rails中的数据库值
- Ruby on Rails - 引导旋转木马按钮不起作用
- 点击浏览器的“后退”按钮显示的是JSON而不是HTML(使用Rails和d3.js)
- 如何在咖啡脚本中识别提交按钮,Rails 3应用程序
- 按索引迭代数组时,单击提交按钮Ruby on Rails
- 如何使用 javascript 而不是使用控制器中的方法在 rails 中呈现部分按钮单击
- 我可以从 Rails 4 中的按钮提交传递参数吗?
- Rails:尝试在按钮单击时渲染部分
- Rails应用程序上的AJAX按钮
- 如何在提交按钮上触发模态&重定向Rails
- Rails 4-使用脚本变量作为按钮值
- Rails 4:使用JavaScript按钮更改表值
- rails上的两个保存按钮的功能略有不同
- 如何正确使用带按钮的jquery rails 4
- 在Rails中,如何通过单击其中一个页面上的按钮来更改三个独立页面上边框的颜色
- 如何创建带有rails的按钮,用javascript添加输入字段
- 点击按钮在rails上传Jquery文件
- 点击启用禁用的单选按钮rails应用程序
- 文本框数据不提交时,按ENTER,但工作在提交按钮(Rails/Bootstrap)