JavaScript: prevenirea schimbării inputului de fișier la clic dacă utilizatorul anulează confirm()


Cum pot împiedica un element de intrare fișier dintr-un formular să se schimbe prin evenimentul onclick din DOM atunci când folosesc metoda confirm()?

În exemplu, vreau să ofer unui utilizator oportunitatea de a nu pierde valoarea unui element de input de tip fișier, întrebându-l dacă dorește Ok|anulare; dacă apasă anulare, fereastra de dialog pentru fișiere nu ar trebui să fie afișată.

XHTML

<input name="post_file" onclick="images_change();" type="file" value="" />

JavaScript

function images_change()
{
 var answer = confirm('Okay or cancel, if you cancel no dialog window will be displayed.');

 if (answer)
 {
  answer = true;
  //previous item previews deleted here in a while loop.
 }
 else {answer = false;}

 return answer;
}

Răspuns #1

De ce să nu-l incluzi direct dacă ai un singur fișier de intrare?

HTML :

<input name="post_file" onclick="return check()" type="file" value="" />

JavaScript :

function check() {
    return confirm('Okay or cancel, if you cancel no dialog window will be displayed.');
}

exemplu jsFiddle.

Răspunsul #2

document.getElementById('post_file').addEventListener('click',function(e) {images_click(e);},false);

function images_click(e)
{
  var answer = confirm('Ok or cancel?');

  if (answer)
  {
   //shows file selection dialog window.
  }
  else {e.preventDefault();}
 }
}