Foros del Web » Programando para Internet » Jquery »

Problemas con codicionales

Estas en el tema de Problemas con codicionales en el foro de Jquery en Foros del Web. Buenos días, tengo un problema con mis condicionales, me toma tanto el if como el else y me aaroja la ventana Dialog son datos. Ayuda ...
  #1 (permalink)  
Antiguo 04/11/2014, 09:21
Avatar de ERIKPUGO  
Fecha de Ingreso: marzo-2014
Ubicación: Bogota- Colombia
Mensajes: 16
Antigüedad: 8 años, 5 meses
Puntos: 0
Problemas con codicionales

Buenos días, tengo un problema con mis condicionales, me toma tanto el if como el else y me aaroja la ventana Dialog son datos. Ayuda si tengo algo mal en mis condicionales.

function buscaProducto(url, cod, name) {

if (cod.length != 0 || name.length != 0) {
var producto = name;
var identidad = cod;

$.ajax({
url: url,
type: "POST",
dataType: "html",
error: AjaxFailure,
beforeSend: AjaxBegin,
data: { productoNombre: producto, identidad: identidad },

success: function (data) {
$("#dialog").dialog({
bigframe: true,
modal: true,
autoOpen: true,
width: 900,
heigth: 700,
resizable: false,
});

$("#progressbar").hide();
$("#dialog").html(data);

console.log("Entregó los datos al #dialog");

}
});
}
else {
alert("<p>Debe ingresar una opcion de busqueda</p>", $(window).height() / 3)
this.abort();
}
}
  #2 (permalink)  
Antiguo 04/11/2014, 09:41
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 8 años, 1 mes
Puntos: 44
Respuesta: Problemas con codicionales

Tendrías que detallar un poco más lo que le enviás a la función. Según veo se puede buscar por nombre o por código? Es así? Y lo que querés hacer es que si alguno de los dos está vacío que tire un diálogo de error? Habría que ver que valores recibe en cod y name respectivamente.

Si lo que necesitás es que ambos estén completos, tu if debería ser:

Código Javascript:
Ver original
  1. if (cod.length != 0 && name.length != 0) {

Saludos :)
  #3 (permalink)  
Antiguo 04/11/2014, 10:34
Avatar de ERIKPUGO  
Fecha de Ingreso: marzo-2014
Ubicación: Bogota- Colombia
Mensajes: 16
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Problemas con codicionales

Hola, lo que quiero hacer es si el nombre o el código contiene datos haga la condicional por el if y si no tiene datos envía un alert de ingrese datos, es correcto lo que dices, lo que pasa es que entra a las dos condicionales , primero al if y ejecuta el Ajax y luego al else y allí es donde genera conflicto?? no entiendo por que me ingresa a los dos????
  #4 (permalink)  
Antiguo 04/11/2014, 11:28
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 8 años, 1 mes
Puntos: 44
Respuesta: Problemas con codicionales

Yo hice la prueba de ejecutar una versión resumida de tu función y anduvo sin problemas:

Código Javascript:
Ver original
  1. function buscaProducto(url, cod, name) {
  2.     if (cod.length != 0 || name.length != 0) {
  3.         console.log('hay datos');
  4.  
  5.     } else {
  6.         console.log('no hay datos');
  7.     }
  8. }
  9.  
  10. buscaProducto('http://google.com', '', '');
  11. buscaProducto('http://google.com', 'a', 'b');

Última edición por GeekGirl; 04/11/2014 a las 11:37
  #5 (permalink)  
Antiguo 05/11/2014, 13:40
Avatar de ERIKPUGO  
Fecha de Ingreso: marzo-2014
Ubicación: Bogota- Colombia
Mensajes: 16
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Problemas con codicionales

tengo una función que al ingresar un código o un nombre haga una búsqueda por medio de un click en el boton, ya que por medio de condicionales si se cumple el if muestre una ventana con Ajax y traiga unos datos a esta ventana y si no ingresan nada pues lanze un alert, aquí viene el problema que parece ser y lo que he notado:

observo que ingresa al if y pinta el Ajax y valida bien, pero con los puntos de interrupción de firebug detecte que también entra al else y pues carga la ventana dialog pero en blanco.. sin datos.. creo que es por que manda el alert del else y este bloquea la otra ventana. ya que ingresa tanto al if como al else.

la segunda opción de falla puede ser que cuando le doy un click o cambio de vista y hago la búsqueda hace los mismo.. muestra la ventana en blanco .. ojo .. pero si hago de nuevo la búsqueda y le doy un click error luego le doy tecla esc y vuelvo y click a la busqueda.. allí me trae los datos correctos o cuando le doy f5 y vuelvo y hago la búsqueda allí también me trae los datos.. será la cache? ayuda...

aquí paso mas información, espero sea suficiente..

vista.

@model IEnumerable<SifActivoFijo.Models.GN_Portafolio>

<form class="items">
<label>items por Pagina: </label>
<select>
<option>5</option>
<option>10</option>
<option>15</option>
</select>
</form>
<input name="button" type="button" onclick="$('#dialog').dialog('close');" value="Cerrar" />
<table class="tablas">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.CodigoPortafolio)
</th>
<th>
@Html.DisplayNameFor(model => model.NombrePortafolio)
</th>
<th></th>
</tr>
</thead>
<tbody id="pagina">
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.CodigoPortafolio)
</td>
<td>
@Html.DisplayFor(modelItem => item.NombrePortafolio)
</td>
<td>
<input class="seleccion" type="button" value="Seleccionar" />


</td>
</tr>
}
</tbody>
</table>
<div class="holder"></div>
<script type="text/javascript">
$(document).ready(function () {

$('input.seleccion').click(function () {
var codigo = $(this).parent().prev().prev();
var nombre = $(this).parent().prev();
$('#activoFijo_GN_Portafolio_CodigoPortafolio').va l($.trim(codigo.text()));
$('#GN_Portafolio_CodigoPortafolio').val($.trim(co digo.text()));
$('#nombrePortafolio').val($.trim(nombre.text()));
$("#activoFijo_DescripcionActivoFijo").val($.trim( nombre.text()));
document.getElementById("dialog").innerHTML = '<div id="progressbar" class="progressbar" style="display: none;"></div>';
$("#dialog").dialog('close');
});
});
</script>

controlador

[HttpPost]
public ActionResult BusquedaProducto(string productoNombre, string identidad)
{
if (productoNombre.Equals(""))
{
if (identidad.Equals(""))
{
return HttpNotFound();
}
else
{
var code = (from p in db.GN_Portafolio
where p.CodigoPortafolio.StartsWith(identidad) && p.SenSerial == true
select p).ToList();
if (code.Equals("0"))
{
return HttpNotFound();
}
else
{
return View(code);
}
}
}
else
{
var producto = (from p in db.GN_Portafolio
where p.NombrePortafolio.StartsWith(productoNombre)
select p).ToList().Take(100);
if (producto.Equals("0"))
{
return HttpNotFound();
}
else
{
return View(producto);
}
}

}

Última edición por ERIKPUGO; 06/11/2014 a las 10:12

Etiquetas: javascript+html, jquery-ajax, mvc
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:17.