Hi, Im trying to check for uploading of files of only doc and ps types. For that matter I have used two javascript funtions and the form. Im trying to use onSubmit event handler along with form_for.But the problem is that, files of any types are getting uploaded. Can anybody point me out what am I doing wrong here ?
-Thanks Saurav
the javascript functions are
<script> extArray = new Array(".doc",".ps"); function checkFile(file){ fileType = false; if (!file) return false;
while (file.indexOf("\\") != -1) file = file.slice(file.indexOf("\\") + 1); ext = file.slice(file.indexOf(".")).toLowerCase();
for (var i = 0; i < extArray.length; i++) { if (extArray[i] == ext) { fileType = true; break; } } if (!fileType) { alert("Please upload files that end in types: " + (extArray.join(" ")) + "\nPlease select a new " + "file to upload and submit again."); file1.focus(); return false; } else return true; }
function validate_form_fields(this) { var file1 = document.getElementById("this.file1");
if (checkFile(file1)) return true; else return false;
} </script>
the code for form is :
<%= error_messages_for :project %>
<tr> <td>
<% form_for :project, :url => {:controller=>:project,:action => "create"},:html=>{:multipart => true, :name => "newproject_form", :onSubmit => "return validate_form_fields(this);"} do |f| -%>
<!--form section-->
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0> <TR> <TD HEIGHT=15 COLSPAN=11></TD> <TD WIDTH=6 HEIGHT=15></TD> </TR> <TR> <TD width="89" HEIGHT="27">Project Name</TD> <TD HEIGHT="27" ><%= f.text_field "name" %></TD> </TR> <TR> <TD HEIGHT=25>Description</TD> <TD HEIGHT=25 align="left"><%= f.text_area "description", :cols => 40, :rows => 10 %></TD> </TR> <tr> Please upload only files that end in: .doc and .ps </tr>
<TR> <TD HEIGHT=24>Upload Files </TD> <TD HEIGHT=24 ><%= file_field_tag :file1 %></TD> </TR>
<TR> <TD height="28" > </TD> <TD><a href="javascript:document.newproject_form.submit()";><img src="/images/create.jpg" /></a></TD>
<TD> </TD> <TD></TD> </TR>