-1

私はこの機能を持っています(私のフォームを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>

しかし、うまくいきません!この関数ではアラートのみが機能するようです。手伝ってくれませんか?本当にありがとう :)

4

1 に答える 1