No ale przecież jak wybierzesz jakiś plik w polu file, to zmieniasz wartość atrybutu value tego pola. Wystarczy drobna modyfikacja przedstawionego skryptu i będzie on spełniał Twoje oczekiwania. Oczywiście skrypt należy podpiąć pod jakieś zdarzenie, bo powyżej zaprezentowany kod działać nie będzie, a gotowca niestety nie dostaniesz.
<script type="text/javascript"> <!--
var myform = getElementById("myform");
var aNames = myform["attachmentNames[]"];
var a = myform["attachments[]"];
// i w pętli sprawdzamy, czy podano wartość w polach
for(var i = 0; i < aNames.length; i++) {
if(a[i].value != '') {
// wybrano jakiś załącznik
// sprawdzamy, czy podano dla niego nazwę
if(aNames[i] == '') {
// nie podano nazwy, możemy okrzyczeć użytkownika
var emptyName = true;
}
}
if(emptyName) {
// tu go okrzyczymy
// i zatrzymamy przetwarzanie formularza, coby nie został wysłany
return false;
}
-->
Niestety po przesłaniu formularza pól typu file nie można ponownie wypełnić.
Właściwie rozwiązanie masz podane jak na dłoni. Jeśli nie zamierzasz wykazać się inicjatywą, to umieść ogłoszenie w odpowiednim dziale.