【发布时间】:2016-09-03 17:37:20
【问题描述】:
我在进行一些 jquery 验证的表单中遇到问题。如果未填写特定输入字段,则应通过添加禁用属性来禁用“前进”按钮:
if errors
$('.btn-move-forward').attr("disabled", true)
这可行,但我在该按钮上也有一个点击事件: (咖啡稿)
$('.btn-move-forward').click ->
$('#step2, #step3').toggle()
我希望.btn-move-forward 在按钮被禁用时不会触发点击事件,但它会触发!!
首先:我不明白为什么,因为每个浏览器规范都定义不应该发生这种情况。无论如何,我尝试通过执行以下操作来绕过它:
$('.btn-move-forward').click ->
if !$(this).is(:disabled)
$('#step2, #step3').toggle()
或者这个
$('.btn-move-forward').click ->
if $(this).prop("disabled", false)
$('#step2, #step3').toggle()
或者像这样组合事件监听器:
$('.btn-move-forward').on 'click', '.btn-move-forward:enabled', ->
$('#step2, #step3').toggle()
不,所有这些都无法正常工作。该按钮仍用作向前移动按钮。
我想要的只是按钮不听onclick,如果它被禁用。
【问题讨论】:
-
.btn-move-forward元素是button还是input type="button"?如果没有,那么 disabled 属性将不起作用。如果它是其中一种类型,那么您的代码应该可以工作:jsfiddle.net/pcokf7d8。您需要检查控制台是否有错误,并确保disabled属性按照您的预期应用。 -
做到了@RoryMcCrossan!之前它是一个简单的 div 并使其成为一个按钮元素。如果你回复它,我会接受你的回答。
-
谢谢,很高兴为您提供帮助。我为你添加了答案。
标签: javascript jquery coffeescript