我正在编写一个小脚本来执行正则表达式验证。如果正则表达式不匹配,我禁用提交/“下一步”按钮。它工作正常,但如果在给定的文本字段中没有输入任何内容,我想启用提交/“下一步”按钮。我有一个看起来像这样的函数:
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调用,虽然我不确定原因。有人可以向我解释这种行为或显示我出错的地方吗?任何反馈都将非常感谢!