#javascript
#javascript
Вопрос:
Я использую 2 функции входного файла foto для допустимого расширения и заменяю метку именем foto
html-код:
<input class="foto" type='file' name='propic' id="aa" class="required" value="<?php echo "$FOTO"; ?>" onchange="pressed()"><label style="font-weight:normal; width:80px; overflow:hidden; text-overflow:ellipsis;" id="fileLabel"><?php echo "$FOTO"; ?></label>
код javascript:
<script type="text/javascript">
var a = document.getElementById('aa');
window.pressed = function(){
if(a.value == "")
{
fileLabel.innerHTML = "Choose file";
}
else
{
var theSplit = a.value.split('\');
fileLabel.innerHTML = theSplit[theSplit.length-1];
}
};
a.onchange = function(e){
var ext = this.value.match(/.([^.] )$/)[1];
switch(ext)
{
case 'jpg':
case 'jpeg':
case 'png':
break;
default:
alert('File is not valid!');
this.value='';
}
};
</script>
Работает только одна функция, то есть функция для допустимого расширения файла.. Как заставить работать другую функцию??
Комментарии:
1. window.нажата? когда / как вы ожидаете вызвать это событие? И где
fileLabel
определена переменная? Есть ли у вас какая-либо ошибка в консоли js?2.
<input [...] onchange="pressed()">
3. @J.Beyer Я ввел его..
4. окно @FabrizioCalderan.нажимается при нажатии входного файла для открытия окна браузера .. метка файла определена в теге label, и у меня нет никаких ошибок в консоли js
5. sry, это был @FabrizioCalderan .. и вам также нужно определить filelabel в js-коде. Причина, по которой вы не получаете сообщение об ошибке, заключается в том, что window.pressed не вызывается, потому что вы перезаписываете.onchange . Взгляните на
addEventListener()
.
Ответ №1:
Пожалуйста, попробуйте:
<script type="text/javascript">
var a = document.getElementById('aa');
var fileLabel = document.getElementById('fileLabel');
updateLabel = function(){
if(a.value == "")
{
fileLabel.innerHTML = "Choose file";
}
else
{
var theSplit = a.value.split('\');
fileLabel.innerHTML = theSplit[theSplit.length-1];
}
};
validateExtension = function(e){
var ext = this.value.match(/.([^.] )$/)[1];
switch(ext)
{
case 'jpg':
case 'jpeg':
case 'png':
break;
default:
alert('File is not valid!');
this.value='';
}
};
a.addEventListener('change',validateExtension,false);
a.addEventListener('change',updateLabel,false);
</script>
и удалите onchange
из html-кода.
Комментарии:
1. Большое вам спасибо, сейчас обе работают .. я дам вам медаль: D
2. Нет проблем 🙂 Но обратите внимание, что некоторые IE-версии не знают addEventListener — я бы рекомендовал использовать jQuery
bind()
.