2011-04-18 95 views
0

我需要能够仅在单击按钮时提交表单。此外,我需要在表单提交后禁用按钮。仅提交按钮+禁用提交w/jQuery

我想为按钮添加一个id并添加一个点击功能。我在正确的轨道上吗?仍然不确定如何在实际点击后禁用按钮。

$('#myButton').click(function() { 

}); 

回答

1
$('#myButton').click(function() { 
    $(this).attr('disabled','disabled') 
}); 
+2

我不久前就此进行了一场健康的辩论,我已经开始欣赏'$(this).attr('disabled',false)'字符串值。您可以将字符串设置为任何内容,并且它的功能相同,因此无意义。而且,重新启用与'.attr('disabled',false)'一样简单,而不是完全删除属性。只是思考的食物。 – 2011-04-18 19:48:55

+0

是的,这是我们所需要的不一致之处,就像选择与检查一样。 – 2011-04-18 20:00:51

+0

这并不矛盾。 '.attr('disabled',false)'在你进行DOM操作时更加一致。而禁用DOM属性的W3C标准是布尔类型,而不是字符串。 – 2011-04-18 20:05:18

2

你在正确的轨道上。单击后禁用按钮,您只需设置disabled属性。喜欢的东西

$('#myButton').click(function() { 
    // get a reference to the element on which the handler is bound 
    // wrap it in a jQuery object so we can call jQuery methods on it. 
    $(this) 
    // set the disabled attribute. You can use true or the string 'disabled' 
    .attr('disabled', true); 
}); 

记住,形式也可以通过按下Enter键当表单中的元素具有焦点提交。

+1

或简单地说:'$(this).attr('disabled',true).closest('form')。submit();'Yay for chaining! – 2011-04-18 19:47:05

+0

@亚当 - 是啊!我不记得'attr'是否返回了原始对象。将更新:) – 2011-04-18 19:49:20

+0

我会继续进一步说,你不需要在表单上调用.submit()。可能需要小提琴来证明,但只要你不停止传播或返回错误,就应该进行默认操作(即提交表单)。如果没有在你的函数中返回false,你可能实际上会提交表单两次,如果是这样的话。 – 2011-04-18 19:51:42