尝试重新启用提交按钮时出现异常的javascript行为

时间:2012-07-25 18:07:17

标签: javascript jquery form-submit

我正在编写一个小脚本来执行正则表达式验证。如果正则表达式不匹配,我禁用提交/“下一步”按钮。它工作正常,但如果在给定的文本字段中没有输入任何内容,我想启用提交/“下一步”按钮。我有一个看起来像这样的函数:

function functionname( code, tograb ){
    $.ajax({
            url : "{% url survey.views.ajax %}",
            data: {
            'r_code': code,
            'qid': '{{ question.id }}',
            'other_text': tograb.value,
            'csrfmiddlewaretoken': '{{ csrf_token }}'
      }, success: function(html){          
        if (html != "OK") {
          $('#Next').attr('disabled', true);
          $(#'span' + String(code)).html(html);
        } else {
          $('#Next').removeAttr('disabled');
           $(#'span' + String(code)).html("");
        }
      }
     });

    if (tograb.value.length == 0) {
          console.log("removing attribute");
          console.log(tograb.value.length);
          $('#Next').removeAttr('disabled');
    }
};

相应的HTML如下所示:

  <input type="text" name="1" value = ""
  id = "other_text1"
  onkeyup="functionname('1', this)"
  /> 

这似乎适用于所有使用超过1的字符串长度的字符串,但如果我删除了文本字段中的所有内容,则它不起作用。实际上,它似乎工作了半秒,因为它重新启用了提交按钮,但它再次禁用了该按钮。

查看Firefox的调试控制台,我看到以下内容:

[14:02:26.757] GET http://myurl/survey/ajax?r_code=1&qid=9&other_text=d&   
csrfmiddlewaretoken=m9s5BxbOeqDEheQyQmTIGzCrMbX56e8y [HTTP/1.1 200 OK 16ms]
[14:02:28.826] removing attribute @ http://myurl/survey/6:27
[14:02:28.829] 0 @ http://myurl/survey/6:28
[14:02:28.833] GET http://myurl/survey/ajax?r_code=1&qid=9&other_text=& 
csrfmiddlewaretoken=m9s5BxbOeqDEheQyQmTIGzCrMbX56e8y [HTTP/1.1 200 OK 13ms]

所以看起来正在进行两次AJAX调用,虽然我不确定原因。有人可以向我解释这种行为或显示我出错的地方吗?任何反馈都将非常感谢!

0 个答案:

没有答案