```
var opciones = {
beforeSubmit: function () { }, // Función de callback antes de enviar
success: function (data) { }, // Función de callback después de enviar
};
// Validación del formulario
$('#formulario').validate({
errorLabelContainer: $("div.contenedor-error"),
submitHandler: function (form) {
$(form).ajaxSubmit(opciones);
}
});
### Cálculo de la Diferencia entre Dos Fechas
```
function calcularDiferenciaFechas(fecha) {
var ahora = new Date();
var segundos = Math.abs((fecha.getTime() - ahora.getTime()) / 1000);
var dias = Math.floor(segundos / (60 * 60 * 24));
var anios = Math.floor(dias / 365);
var meses = (ahora.getFullYear() * 12 + ahora.getMonth()) - (fecha.getFullYear() * 12 + fecha.getMonth());
var horas = Math.floor((segundos / 3600) % 24);
var minutos = Math.floor((segundos / 60) % 60);
var segundosRestantes = Math.floor(segundos % 60);
if (anios >= 1) {
resultado = "" + anios + " años atrás";
} else if (meses > 1) {
resultado = "" + meses + " meses atrás";
} else if (dias >= 1) {
resultado = "" + dias + " días atrás";
} else if (horas >= 1) {
resultado = "" + horas + " horas atrás";
} else if (minutos >= 1) {
resultado = "" + minutos + " minutos atrás";
} else {
resultado = "justo ahora";
}
return resultado;
}
Deshabilitar el Envío de un Formulario
```
$("#formulario").submit(function (e) {
e.preventDefault();
});
### Uso de ECharts para Visualización de Datos
ECharts es una biblioteca de gráficos en JavaScript que se ejecuta de manera fluida en PC y dispositivos móviles, compatible con la mayoría de los navegadores modernos. Se basa en ZRender, una biblioteca ligera de Canvas.
### Métodos indexOf() y lastIndexOf()
```
// Verificar si una cadena contiene un substring
var prueba = ",1,";
prueba.indexOf("," + prueba + ",") != -1;
// Obtener una subcadena a partir de una posición específica
var _st_pwd = user_pwd.substring(user_pwd.indexOf('+'));
// Obtener una subcadena desde el inicio hasta una posición específica
var _s_pwd = user_pwd.substring(0, user_pwd.lastIndexOf('+'));
Obtaner el Valor de un Celda de Tabla
```
$("#tabla tr td").eq(1).text();
### Contador Regresivo para Botones
```
function contadorRegresivo(s, obj) {
s--;
if (s == 0) {
obj.innerHTML = 'Enviar código';
} else {
obj.innerHTML = s + ' segundos para reenviar';
setTimeout(function () {
contadorRegresivo(s, obj);
}, 1000);
}
}
Habilitar y Deshabilitar un Botón
```
// Deshabilitar botón
$('#botonSeleccion').attr("disabled", true);
// Habilitar botón
$('#botonSeleccion').attr("disabled", false);
### Cargar una Nueva Página sin Refrescar
```
function cargarPagina(url) {
var cuerpoPagina = $('.contenedor-contenido');
$.ajax({
type: "GET",
cache: false,
url: url,
dataType: "html",
success: function (res) {
if (res == '"needlogin"') {
window.location.href = "/home/login";
} else {
if (typeof window.historial != "undefined") {
var i = window.historial.indexOf(url);
if (i != -1) {
window.historial.splice(i, 1);
}
if (window.historial.length > 10) {
window.historial.shift();
}
window.historial.push(url);
} else {
window.historial = [];
window.historial.push(url);
}
cuerpoPagina.html(res);
}
},
error: function (xhr, ajaxOptions, thrownError) {
cuerpoPagina.html('<h4 style="font-family:Microsoft YaHei;">Error de conexión al servidor, por favor revisa tu red...</h4>');
},
async: false
});
}
Selección de Todos los Elementos
```
$("#seleccionarTodo").on("click", function () {
if (this.checked) {
$("input:checkbox[name='checkvideo']").prop("checked", true);
} else {
$("input:checkbox[name='checkvideo']").prop("checked", false);
}
});
### Descargar un Archivo con jQuery
```
var contenido = "contenido del archivo!";
var datos = new Blob([contenido], { type: "text/plain;charset=UTF-8" });
var urlDescarga = window.URL.createObjectURL(datos);
var enlace = document.createElement("a");
enlace.href = urlDescarga;
enlace.download = "nombre_archivo.txt";
enlace.click();
window.URL.revokeObjectURL(datos);
Solución para Errores de Envío de HTML con AJAX en C#
Agregar ValidateRequest="false" en la etiqueta <%@ page %> y configurar web.config:
```
<system.web>
<httpruntime requestvalidationmode="2.0"></httpruntime>
</system.web>
### Métodos para Agregar Contenido en Elementos
Los métodos `append`, `prepend`, `after` y `before` permiten agregar contenido en diferentes posiciones dentro o alrededor de un elemento seleccionado.
### Obtener Parámetros de la URL
```
function obtenerParametro(nombre) {
var regex = new RegExp("(^|&)" + nombre + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(regex);
if (r != null) return unescape(r[2]); return null;
}
$(document).ready(function(){
var pagina = obtenerParametro("userId");
});
Convertir un Timestamp a Fecha
```
function convertirTimestamp(tiempo) {
var fecha = new Date(tiempo);
var anio = fecha.getFullYear();
var mes = fecha.getMonth() + 1;
var dia = fecha.getDate();
var hora = fecha.getHours();
var minuto = fecha.getMinutes();
var segundo = fecha.getSeconds();
return anio + "-" + mes + "-" + dia + " " + hora + ":" + minuto;
}
### Convertir un Timestamp en C#
```
var c = date.replace("/Date(", "").replace(")/", "");
var ahora = new Date(parseInt(c));
var anio = ahora.getFullYear();
var mes = ahora.getMonth() + 1;
var dia = ahora.getDate();
var hora = ahora.getHours();
var minuto = ahora.getMinutes();
var segundo = ahora.getSeconds();
return anio + "-" + (mes < 10 ? "0" + mes : mes) + "-" + (dia < 10 ? "0" + dia : dia) + " " + (hora < 10 ? "0" + hora : hora) + ":" + (minuto < 10 ? "0" + minuto : minuto) + ":" + (segundo < 10 ? "0" + segundo : segundo);
Convertir una Cadena de Array a Array
```
var imagenes = '["2016-11-22/f22faadc-9b45-49c5-ace9-e77fbfbcc86b.jpg","2016-11-22/28929bc2-a865-45c8-aa0b-0584408e1ed3.jpg"]';
// Primer método
var img = eval(imagenes);
// Segundo método
var img = JSON.parse(imagenes);
### Obtener el Valor Seleccionado de un Select
```
$("#idLista").val();
Obtener el Texto Seleccionado de un Select
```
$("#idLista").find("option:selected").text();
### Convertir Objeto a JSON y Viceversa
```
// Convertir objeto a JSON
var js = JSON.stringify(jsonStr);
// Parsear JSON
var obj = JSON.parse(agent.houseImgs);
// Crear un objeto JSON
var js = { "name": $(nombre).val(), "phone": $(telefono).val(), "carNumber": $(numerosAuto).val(), "remark": comentario, "imgurl": urlImagen };
// Inicializar un array
var arreglo = new Array();
// Agregar un objeto al array
arreglo.push(objetoJson);
Contador Regresivo de 60 Segundos
```
var contador = 60;
function enviarCorreo(obj) {
if (contador == 0) {
obj.removeAttribute("disabled");
obj.value = "Obtener código";
contador = 60;
return;
} else {
obj.setAttribute("disabled", true);
obj.value = "Reenviar (" + contador + ")";
contador--;
}
setTimeout(function () {
enviarCorreo(obj);
}, 1000);
}
### Limpiar un Formulario
```
function limpiarFormulario() {
$(':input', '#formularioRegistro')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');
}
Obtener el Elemento Padre de un iframe
```
$("#sidebar-nav", parent.document)
</div>