Quantcast

Forums | MacLife

You are not logged in.

#1 2009-02-01 1:50 am

resedit
Chicken Little
Royal Wombat
From: /dev/null
Registered: 1999-11-01
Posts: 50394
Website

Why doesn't this work ?? removing file input node

For security reasons, the value of file input nodes are read only.
Thus is a validation script tries to validate a file input and it fails, it seems you can not reset it without resetting the entire form.

So I tried removing the node and inserting a new one:

Code:

function validateImage(image,voucher) {
   var myInput = document.getElementById(image).value
   if (emptyInput(myInput)) {
      return true;
      } else {
      if (validFileType(myInput)) {
         return true;
         } else {
         var myDiv   = document.getElementById(voucher);
         myDiv.removeChild(myDiv.firstChild);
         var myImage = document.createElement("input");
         myImage.setAttribute("type","file");
         myImage.setAttribute("name","voucher[]");
         myImage.setAttribute("style","width: 42em;");
         myImage.setAttribute("id",image);
         myDiv.appendChild(myImage);
         return false;
         }
      }
   }

Both opera and firefox fail to remove the node, but are more than willing to insert the replacement - which causes a node id clash that pukes opera (but firefox seems to handle, interestingly w/o errors to the console).

Does the read only status of file inputs prevent a note with a selected file from being deleted, or is my code wrong?
It seems that removing a node should not cause any security concerns.

Is there any proper way to reset a file input without resetting the entire form?
It would seem to me that if resetting the entire form is not a security issue, then resetting a file input node to blank shouldn't be either.


In her right hand Jenny held the Bible of her mother
Jenny had a pistol in the other
-- Steve Taylor

Offline

 

#2 2009-02-01 3:05 am

resedit
Chicken Little
Royal Wombat
From: /dev/null
Registered: 1999-11-01
Posts: 50394
Website

Re: Why doesn't this work ?? removing file input node

I'm starting to make stupid mistakes so I'm hitting the hay, but I think maybe I need to try remove all the children of the div that has the input - maybe it's picking up the carriage return as a text node or something. I'll try that tomorrow.

If that doesn't work, then I won't have my js validation script exit the form submit on wrong image types (I check everything server side anyway and thus give a chance to fix it w/o needing to refill all the other data if it is not an accepted filetype according to fileinfo)


In her right hand Jenny held the Bible of her mother
Jenny had a pistol in the other
-- Steve Taylor

Offline

 

#3 2009-02-01 6:24 am

resedit
Chicken Little
Royal Wombat
From: /dev/null
Registered: 1999-11-01
Posts: 50394
Website

Re: Why doesn't this work ?? removing file input node

That was it - kill all the children and it does what I want to do (thus preventing un-necessary file uploads)


In her right hand Jenny held the Bible of her mother
Jenny had a pistol in the other
-- Steve Taylor

Offline

 

Board footer

Powered by PunBB 1.2.6
© Copyright 2002–2005 Rickard Andersson