Pregunta

Tengo una página Web ASP.NET en C # con un formulario de carga de archivos XML. Cuando el usuario hace clic en 'Subir', confirman una alerta de JavaScript aparecerá para preguntarle al usuario, "es este archivo correcto?". La alerta confirmar sólo se activará si el nombre de archivo no contiene un valor de uno de los otros campos de formulario.

¿Cuál es la mejor manera de combinar el uso de un formulario ASP.NET C # y una alerta de javascript confirmar que se activa si el nombre de un archivo que se ha subido no cumple con ciertos criterios?

¿Fue útil?

Solución

supongo que están poniendo valor de cadena válida en un campo oculto (no se ha mencionado). Implementar OnClientClick para Subir botón:

<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: - En cuanto a <%= file1.ClientID %>.

Esto será reemplazado por el ID de cliente del control de carga de archivos como ctl00$ctl00$cphContentPanel$file1. Pone la secuencia de comandos en esteroides con respecto al uso de algo así como $("input[id$='file1']"). Para obtener más información, véase de Dave Ward Post .

Otros consejos

No hay mucho que tiene que hacer con C # para esta página, parece que la mayor parte de esto se hará en el lado del cliente.

Agregue el control fileupload y un botón a su formulario .aspx. Establecer OnClientClick propiedad de Button a algo así como

OnClientClick = "return myFunction()"

y luego escribir una función de JavaScript como:

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

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

Asegúrese de que "myFunction ()" devuelve false si desea cancelar la devolución de datos (es decir, el usuario hace clic en "no" en el diálogo de confirmación). Esto cancelará la devolución de datos si hacen clic en "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;
  }
}

he tenido problemas para implementar este tipo de cosas para trabajar en IE y Firefox debido a la forma acontecimientos trabajan en esos navegadores. Cuando llegué a trabajar en uno de ellos, el otro todavía causar una devolución de datos, incluso si anula.

Esto es lo que tenemos en nuestro código (la prueba del navegador fue robado de otros lugares).

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

Además de utilizar la validación del lado del cliente, también debe agregar un CustomValidator para proporcionar la validación en el lado del servidor. No se puede confiar en que el usuario ha Javascript activado, o que el usuario no ha dejado de lado sus cheques de Javascript.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top