Javascript 禁用表单按钮onClick,然后提交表单
我的表单允许用户提交一首诗 有时,页面上会有一个新用户名字段(如果没有人登录)。在这种情况下,我希望覆盖“单击”按钮,使其首先注册:Javascript 禁用表单按钮onClick,然后提交表单,javascript,jquery,coffeescript,Javascript,Jquery,Coffeescript,我的表单允许用户提交一首诗 有时,页面上会有一个新用户名字段(如果没有人登录)。在这种情况下,我希望覆盖“单击”按钮,使其首先注册: $('#submit-poem').click -> $('input[type=submit]').attr('disabled', true) if $('#new_poet_name_field').length signUp(); // This will submit the poem form after registering
$('#submit-poem').click ->
$('input[type=submit]').attr('disabled', true)
if $('#new_poet_name_field').length
signUp(); // This will submit the poem form after registering
false
else
console.log("A poet was already logged in!")
true
这过去很管用。但是现在,当没有新的\u poter\u name\u字段时,
,提交按钮保持禁用状态。返回用于提交表单的true
。现在,我必须显式地执行$(“#新问题”)[0]。如果没有诗人姓名字段
,则提交()
为什么返回true
时表单不提交?我的解决办法令人担忧;现在表单可能会提交两次:一次是在我显式提交表单时,一次是在返回true
时。您应该绑定表单“提交”事件,并在希望有人注册而不是提交诗歌时使用prevent default/return false。这样就不需要禁用/启用按钮。我不喜欢没有表单的想法。它是无效的,并且肯定不会遵循HTML的规范
每个构造性表单元素都应该包装在表单标记中。您可以通过多种方式控制表单的提交
你使用的代码太可怕了
为什么??是否有多个提交按钮?下面的代码禁用页面上的每个提交按钮,也可以是其他形式
$('#submit-poem').click ->
$('input[type=submit]').attr('disabled', true)
这是检查提交真实性的错误方法,它可以很容易地用firebug之类的工具进行操作
if $('#new_poet_name_field').length
signUp();
如果确定用户是否登录,那么您可以快速向服务页面发送ajax请求,从而获得该信息
$('#submit-poem').click(function() {
$(this).attr('disabled', true)
$.post("yourservicepage.php", {}, function(data) {
// RE suppose, data is the boolean value from server indicating logged in or not
if(data != true) {
signup(); //if not logged in then signup
}
//...
});
});
不太相关,但你可能会有人用“回车”或其他键提交,而完全绕过你的点击。连接到表单的“提交”事件并返回false/true可能会更简洁。向我展示HTML,为什么在您提交表单时没有表单?我不太清楚。诗总是有一种形式的。我的意思是,有时会有一个“poter_name”字段(如果没有人登录)。@bevanb,检查是否有人登录,基于服务器中的会话,而不是JS。绑定到提交事件起作用,这就是我破坏它之前的情况!