【发布时间】:2012-10-30 11:10:13
【问题描述】:
我有这个功能(让我的表单与 ajax 一起工作):
$(function() {
$('#restore_form').ajaxForm({
beforeSubmit: ShowRequest,
success: SubmitSuccesful,
error: AjaxError
});
});
function ShowRequest(formData, jqForm, options) {
var queryString = $.param(formData);
alert('BeforeSend method: \n\nAbout to submit: \n\n' + queryString);
return true;
}
function AjaxError() {
alert("An AJAX error occured.");
}
function SubmitSuccesful(responseText, statusText) {
alert("SuccesMethod:\n\n" + responseText);
}
我的表单(django 表单)只包含一个文件上传字段。我还想检查验证,为此我有这个功能:
function TestFileType( fileName, fileTypes ) {
if (!fileName) {
alert("please enter a file");
return false;
}
dots = fileName.split(".")
fileType = "." + dots[dots.length-1];
if(fileTypes.join(".").indexOf(fileType) != -1){
alert('That file is OK!') ;
return true;
}
else
{
alert("Please only upload files that end in types: \n\n" + (fileTypes.join(" .")) + "\n\nPlease select a new file and try again.");
return false;
}
}
现在当我尝试在第一个函数中使用验证函数(TestFileType)时,它不起作用。他们两个单独工作。例如,如果我在提交按钮的 onclick 中编写以下行,它可以工作:
onclick="TestFileType(this.form.file.value, ['tar.gz']);"
我还想在成功函数中显示一个隐藏的 div,而不是提醒用户: 我有:
我想在成功函数中做:
$('.response').html(responseText);
$('.response').show();
编辑: 这是我的模板:
<form id="restore_form" enctype="multipart/form-data" method="POST" action="restore/">
{{ form.non_field_errors }}
{{ form.as_p }}
{{ form.file.errors }}
<p id="sendwrapper"><input type="submit" value="{% trans "Send" %}" id="submitButton" style="margin-bottom:10px; cursor:pointer; background-color:#F90;"/></p>
</form>
<div class="response" style="display: none;"></div>
但它不起作用!似乎只有警报在此功能中有效。你能帮我么? 真的谢谢:)
【问题讨论】:
-
您的表单模板代码是什么样的?你确定 $('.response') 选择器匹配 DOM 中的元素吗?
-
我编辑了我的问题。我认为它匹配。谢谢:)
-
从这里看起来不错。也许作为 Firebug 或 Web Inspector 的“网络”选项卡中表单没有导致页面重新加载的健全性检查,它可以解释为什么警报对话框有效,因为警报会阻止页面重新加载,如果您在本地工作,则刷新可能太快以至于不容易被注意到。
-
我会检查的。但如果页面正在重新加载,因为我的代码中有断点,我会理解的。你能帮我如何使用我的验证函数和 ajax 表单(第一个函数)吗?
标签: javascript jquery django ajaxform