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

尝试重新启用提交按钮时出现异常javascript行为,javascript,jquery,form-submit,Javascript,Jquery,Form Submit,我正在编写一个小脚本来执行正则表达式验证。如果正则表达式不匹配,我将禁用submit/“Next”按钮。它工作正常,但是如果给定的文本字段中没有输入任何内容,我想启用submit/“Next”按钮。我有一个函数如下所示: function functionname( code, tograb ){ $.ajax({ url : "{% url survey.views.ajax %}", data: { 'r_cod

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

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)"
  /> 

因此,似乎正在进行两个AJAX调用,尽管我不知道为什么。有没有人能向我解释一下这种行为,或者告诉我哪里出了问题?任何反馈都将不胜感激

看起来您的javascript可能会在以下方面出现问题:$(#'span'+字符串(代码))。删除它不会改变任何东西。.attr('disabled',true)应该是.prop('disabled',true),尽管它可能不会对结果产生任何影响。另外,removeAttr('disabled')、.prop('disabled',false)的isntead,我不知道为什么ajax会被调用两次。也许你按了两次键?对于禁用部分,回调中的代码可能在同步代码之后运行,并撤消该代码所做的任何操作(导致短暂启用按钮)
[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]