我的表单可让用户提交一首诗。
有时,该页面上有一个新用户名字段(如果没有人登录)。在这种情况下,我想覆盖按钮单击,以便首先签名:
$('#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
这曾经很好用。但是现在,当没有new_poet_name_field
时,提交按钮保持禁用状态。返回用于提交表单的true
。现在,如果没有$('#new_question')[0].submit()
,我必须明确地poet_name_field
。
为什么返回true
时表单不会提交?我的解决方法令人担忧;表单现在可能会提交两次:一次是在我明确提交时,一次是在返回true
时。
答案 0 :(得分:1)
您应该绑定到表单'submit'事件,并在您希望某人注册而不是提交诗时使用preventDefault / return false。这样就不需要对按钮进行任何禁用/启用了。
答案 1 :(得分:0)
我不喜欢没有表格的想法。它无效,肯定不遵循HTML的规范。
每个建设性表单元素都应该包装在表单标记内。您可以通过多种方式控制表单的提交。
您使用的代码非常糟糕
WHY ??是否有多个提交按钮?下面的代码禁用页面上的每个提交按钮,也可以是其他形式。
$('#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
}
//...
});
});