Cercando di caricare un file inesistente in Internet Explorer, modulo non viene presentata

StackOverflow https://stackoverflow.com/questions/691323

Domanda

Ho una forma con una input type=file. Internet Explorer consente il tipo di utente tutto ciò che vogliono in quella di ingresso (mentre Firefox porta in primo piano un selettore di file). Se l'utente immette un nome chiaramente non valide, ad esempio:

a

e cerca di inviare il modulo, Internet Explorer non prova nemmeno a inviare il modulo.

C'è un modo per me sapere che questo è successo e lasciate all'utente di sapere questo sta accadendo con un avviso?

È stato utile?

Soluzione 2

Ho trovato un modo migliore per fare questo: http://www.priddypictures.co.uk/reference/fileInputProblem.htm

Quindi, se quei ragazzi / ragazze hanno ragione, e la forma sottopone bene se l'ingresso non ha un attributo name allora:

  • scrivere un plug-in jQuery che la volontà (se Internet Explorer) rimuovere l'attributo nome da tutti gli ingressi di file
  • inserire un altro ingresso nascosto nella forma con un nome corretto
  • copiare il valore di ingresso da file di input nascosto

Potrei scrivere questo plug-in ad un certo punto.

Altri suggerimenti

Si dovrebbe aggiungere un pulsante "onclick ()" evento al presentare che chiama una funzione JavaScript che mette alla prova per la vostra condizione e utilizza un "avviso" JavaScript per permettere all'utente di sapere che hanno bisogno di entrare qualcosa degno di presentazione.

Se vuoi in espressioni regolari per i test.

Se si desidera che l'utente per prendere una decisione, utilizzare un confirm().

Se si desidera avvisare semplicemente e non prova il loro valore, si può usare qualcosa come:

<input type="submit" value="clickme" onClick="if (confirm('Really submit?')) { this.form.submit(); }">

Ecco alcuni esempi di codice che ti porterà il valore da una chiamata di funzione JavaScript all'interno di un onclick():

<html>
    <head>
        <title>hello world</title>
        <SCRIPT LANGUAGE="javascript" type="text/javascript">
            function show_me(form_elem) {
            alert(form_elem.value);
            }
        </script>
    </head>
    <body>
        <form method="GET" name="upload_form" action="index.html" target="_top">
            <input type="file" name="file_name" size="14" maxlength="256" value="">
            <br>
            <input type="submit" value="mybutton" onclick="show_me(this.form.file_name)" />
        </form>
    </body>
</html>

Si potrebbe imitare il comportamento di Firefox con il seguente:

<input type="file" name="test" onkeypress="this.click();return false;">

Quando l'utente tenta di digitare il file di input, si apre il selettore di file.

Ovviamente questo non funziona se il cliente ha disattivato JavaScript, ma a seconda delle esigenze, potrebbe essere "abbastanza buono".

Sembra funzionare bene in IE 6, 7 e 8.

Funziona bene in Firefox 3 (in quanto non consente la digitazione in un <input type=file>).

Funziona bene in Safari per Windows 3 e 4 (in quanto non consente la digitazione in un <input type=file>).

In Opera 9 (che consente la digitazione in un <input type=file>) che non fa nulla (non pop-up il selettore o deglutire le pressioni dei tasti). L'evento onkeypress non sembra di sparare a tutti in realtà, probabilmente per la sicurezza.

In Firefox 2 non funziona (che consente la digitazione in un <input type=file>) perché this.click() non pop-up il selettore e return false inghiotte i tasti premuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top