Можно только назначить "" в качестве значения для файла типа ввода - PullRequest
0 голосов
/ 14 марта 2020

У меня следующий код, который проверяет, является ли я файл .jpg, .jpeg или .png:

<!DOCTYPE html>
<html>
<body>
<input type="file" align="center" accept=".jpg,.jpeg,.png" onchange="this.size = Math.max(this.value.length, 7)+15;read(this)" id="myinput" style="min-width: 50px;" 
      />

</body>
</html>

<script>

var myfile=""
async function read(input) {
  var file = input.files[0];
  var idxDot = file.name.lastIndexOf(".") + 1;
  var extFile = file.name.substr(idxDot, file.name.length).toLowerCase();
  if (extFile=="jpg" || extFile=="jpeg" || extFile=="png"){
      //fileContent = await readFile(file);
      myfile=file
      alert("Valid file selected!");
  }else{
      alert("Only jpg, jpeg or png allowed");
      input.value = myfile;
  }
}
</script>

Я пытаюсь, чтобы, если файл, отличный от этого, был выбран последним значением отображает принятый действительный файл.

Но это происходит только в начале, после того, как был взят действительный файл. если я выберу другой, путь, показанный во входных данных, изменится на путь выбранного файла, даже если он недействителен.

Есть ли способ решить эту проблему, поэтому отображаемый путь всегда является одним из последний действительный файл?

1 Ответ

1 голос
/ 14 марта 2020

немного взломать, но может дать вам то, что вам нужно

var myfile={name:"none"};
 function read(input) {
  var file = input.files[0];
  var idxDot = file.name.lastIndexOf(".") + 1;
  var extFile = file.name.substr(idxDot, file.name.length).toLowerCase();
  var span =document.getElementById('last');
  if (extFile=="jpg" || extFile=="jpeg" || extFile=="png"){
      //fileContent = await readFile(file);
      myfile=file      
      alert("Valid file selected!");
       span.style.display='none';
  }else{
      alert("Only jpg, jpeg or png allowed");
      input.value = '';     
      span.style.display='inline';
      span.innerHTML = "Last valid File was: " + myfile.name
  }
}
span{
display:none;
}
<!DOCTYPE html>
<html>
<body>
<input type="file" align="center" accept=".jpg,.jpeg,.png" onchange="this.size = Math.max(this.value.length, 7)+15;read(this)" id="myinput" style="min-width: 50px;" 
      />
      <span id='last'></span>

</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...