Domanda

Ho una pagina web C # ASP.NET con un modulo di upload di file XML. Quando l'utente fa clic su 'Carica', un avviso di conferma javascript pop-up che chiede all'utente, "è il file corretto?". L'avviso di conferma si attiverà solo se il nome del file non contiene un valore da uno degli altri campi del modulo.

Qual è il modo migliore per combinare l'uso di un modulo ASP.NET C # e un avviso di conferma javascript che viene attivato se il nome di un file caricato non soddisfa determinati criteri?

È stato utile?

Soluzione

Credo che si sta mettendo valore della stringa valida in un campo nascosto (che non hai citato). Implementare OnClientClick per Carica pulsante:

<asp:button .... OnClientClick="return confirmFileName();"/>

<script type="text/javascript">
function confirmFileName()
{
    var f = $("#<%= file1.ClientID %>").val();
    var s=$("#<%= hidden1.ClientID %>").attr("value");
    if (f.indexOf(s) == -1) {
        if (!confirm("Is this correct file?")) {
            $("#<%=file1.ClientID %>").focus();
            return false;
        }
     }
    return true;
}
</script>

EDIT: - Per quanto riguarda <%= file1.ClientID %>.

Questo sarà sostituito dal ID lato client del controllo upload di file come ctl00$ctl00$cphContentPanel$file1. Si mette lo script di steroidi rispetto a usare qualcosa di simile $("input[id$='file1']"). Per ulteriori informazioni si prega di consultare Dave Wards' Post .

Altri suggerimenti

non c'è molto che devi fare con C # per questa pagina, suona come la maggior parte di questo sarà fatto sul lato client.

Aggiungere il controllo FileUpload e un pulsante al form aspx. Impostare la proprietà OnClientClick di Button in qualcosa di simile

OnClientClick = "return myFunction()"

e quindi scrivere una funzione JavaScript come:

function myFunction()
{
   // Check other text values here

   if (needToConfirm){
      return confirm('Are you sure you want to upload?');
   }
   else return true;
}

Assicurarsi che "myFunction ()" restituisce false se si desidera annullare il postback (vale a dire l'utente ha cliccato "no" nella finestra di conferma). Questo annullerà il postback se si clicca "No".

window.onload = function() {
  document.forms[0].onsubmit = function() {
    var el = document.getElementById("FileUpload1");
    var fileName = el.value;

    if(fileName.indexOf("WHATEVER_VALUE") == -1) {
      if(!confirm("Is the file correct?")) {
        el.focus();
        return false;
      }
    }

    return true;
  }
}

Ho avuto problemi di attuazione questo genere di cose per lavorare sia in IE e Firefox per il modo in cui gli eventi lavorano in tali browser. Quando sono arrivato a lavorare in uno di essi, l'altro sarebbe ancora causare un postback, anche se ho cancellato fuori.

Ecco quello che abbiamo nel nostro codice (il test del browser è stato rubato da qualche altra parte).

if (!window.confirm("Are you sure?"))
{
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
        window.event.returnValue = false;
    else
        e.preventDefault();
}

Oltre a utilizzare la validazione lato client, si dovrebbe anche aggiungere un CustomValidator per fornire la convalida sul lato server. Non si può fidare che l'utente ha Javascript attivato, o che l'utente non ha aggirato i vostri assegni Javascript.

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