I am using symfony 2.8 with php7.0 and I have a form that calculates a data with javascript. The detail is that it works well when creating a new record but if I am going to edit a record already saved the function of calculating does not work here the code:
<br>
{% extends 'SonataAdminBundle:CRUD:edit.html.twig' %}
{% block javascripts %}
{{ parent() }}
<script type="text/javascript">
jQuery(document).ready(function ($) {
$idDepartamento = $('#{{ admin.uniqid }}_idDepartamento');
$idMunicipio = $('#{{ admin.uniqid }}_idMunicipio');
$idEstablecimiento = $('#{{ admin.uniqid }}_idEstablecimiento');
$idCanton = $('#{{ admin.uniqid }}_idCanton');
$localidad = $('#{{ admin.uniqid }}_localidad');
$casaInspeccionada = $('#{{ admin.uniqid }}_casaInspecionada');
$casaPositiva = $('#{{ admin.uniqid }}_casaPositiva');
$indiceCasa = $('#{{ admin.uniqid }}_indiceCasa');
{#funcion que convierte a mayusculas lo ingresado en localidad#}
$localidad.on('keyup', function () {
this.value = this.value.toUpperCase()
});
{% if object.idMunicipio %}
$idDepartamento = '{{object.idMunicipio.idDepartamento.id}}';
$idMunicipio = '{{object.idMunicipio.id}}';
{% endif %}
var select2Options = {
placeholder: 'Seleccionar..',
allowClear: true
};
select2Options['placeholder'] = 'Seleccionar Departamento...';
initializeSelect2($idDepartamento, true, false, select2Options);
select2Options['placeholder'] = 'Seleccionar Municipio...';
initializeSelect2($idMunicipio, true, true, select2Options);
select2Options['placeholder'] = 'Seleccionar Establecimiento...';
initializeSelect2($idEstablecimiento, true, true, select2Options);
select2Options['placeholder'] = 'Seleccionar Departamento...';
initializeSelect2($idCanton, true, true, select2Options);
{# operando las variables para calcular el indice de casa#}
$casaPositiva.on('keyup', function() {
calcularIndice();
});
$casaInspeccionada.on('keyup', function() {
calcularIndice();
});
$idDepartamento.on('change', function () {
select2Options['placeholder'] = 'Seleccionar Municipio...';
initializeSelect2($idMunicipio, true, true, select2Options);
var idDepartamento = $(this).select2('val');
console.log(idDepartamento);
if (idDepartamento != '')
{
$.ajax({
url: Routing.generate('obtener_municipios', {idDepartamento: idDepartamento}),
async: true,
dataType: 'json',
success: function (data)
{
$.each(data, function (idx, municipio)
{
$idMunicipio.append($('<option>', {value: municipio.id, text: municipio.nombre}));
});
},
error: function (xhr, textStatus, errorThrown)
{
showDialogMsg('Error...', 'Hubo un error al intentar obtener los municpios', 'dialog-error');
}
});
}
});
$idMunicipio.on('change', function () {
select2Options['placeholder'] = 'Seleccionar Establecimiento...';
initializeSelect2($idEstablecimiento, true, true, select2Options);
var idMunicipio = $(this).select2('val');
console.log(idMunicipio);
if (idMunicipio != '') {
$.ajax({
url: Routing.generate('obtener_establecimiento', {idMunicipio: idMunicipio}),
async: true,
dataType: 'json',
success: function (data) {
$.each(data, function (idx, establecimiento) {
$idEstablecimiento.append($('<option>', {value: establecimiento.id, text: establecimiento.nombre}));
});
},
error: function (xhr, textStatus, errorThrown) {
showDialogMsg('Error...', 'Hubo un error al intentar obtener los establecimientos', 'dialog-error');
}
});
}
});
$idMunicipio.on('change', function () {
select2Options['placeholder'] = 'Seleccionar Canton...';
initializeSelect2($idCanton, true, true, select2Options);
var idMunicipio = $(this).select2('val');
console.log(idMunicipio);
if (idMunicipio != '') {
$.ajax({
url: Routing.generate('obtener_canton', {idMunicipio: idMunicipio}),
async: true,
dataType: 'json',
success: function (data) {
$.each(data, function (idx, canton) {
$idCanton.append($('<option>', {value: canton.id, text: canton.nombre}));
});
},
error: function (xhr, textStatus, errorThrown) {
showDialogMsg('Error...', 'Hubo un error al intentar obtener los cantones', 'dialog-error');
}
});
}
});
{#funcion que me calcula el indie de casa en porcentaje#}
function calcularIndice() {
var indiceCasa = 0;
var casaInspeccionada = $casaInspeccionada.val();
var casaPositiva = $casaPositiva.val();
casaInspeccionada = casaInspeccionada != '' && parseInt(casaInspeccionada) >= 0 ? parseInt(casaInspeccionada) : 0;
casaPositiva = casaPositiva != '' && parseInt(casaPositiva) >= 0 ? parseInt(casaPositiva) : 0;
if( casaInspeccionada <= 0 ) {
alert("El numero ingresado debe ser mayor a cero")
} else {
indiceCasa = ( casaPositiva / casaInspeccionada ) * 100;
}
$indiceCasa.val( indiceCasa.toFixed(2) );
}
});
</script>
{% endblock%}