C # .NET e Javascript Conferma
-
18-09-2019 - |
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?
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.