2010-09-07 16 views
9

Tengo un script jQuery que agrega una fila a una tabla. En resumen, el usuario puede seleccionar un valor de un menú desplegable, luego ingrese la cantidad de meses "x" e ingresa "agregar", que agrega la fila a la tabla. Por ejemplo, la siguiente línea se agrega por el usuario:jQuery: compruebe si la fila de la tabla que contiene ciertos valores ya existe

<tr> 
    <td>Some Value</td> 
    <td>2</td> 
</tr> 

Ahora, si el usuario realiza la misma operación una vez más, tengo que detener el procedimiento y alertar a él que él está tratando de añadir un valor duplicado. ¿Cómo puedo usar jQuery? ¿Puedo verificar si la fila anterior ya existe o no, donde el primer y el segundo elemento <td> tienen el mismo valor que los datos que intenta agregar? La razón por la que digo primer y segundo elemento <td> solo es porque hay otros elementos <td> en la fila, pero contienen campos ocultos que envían los datos recién agregados a un script del lado del servidor, por lo que me gustaría mantener la validación como corta y lo más simple posible.

Si se trata de cualquier ayuda, el ID de la tabla es #tblspecializations

Muchas gracias por sus comentarios.

Respuesta

18

Usted puede ser capaz de utilizar :contains():

$('#tblspecializations tr > td:contains(Some Value) + td:contains(2)').length 

- Example

Tenga en cuenta, sin embargo, que : contains() devolverá el elemento si la cadena dada coincide en cualquier parte del texto del elemento.

+1

Funcionó como una BOMBA, muchas gracias de verdad. No estoy demasiado preocupado porque los valores sean similares ya que son valores predefinidos de todos modos. Me sencilla añade la siguiente función y todo funcionó muy bien: \t \t if ($ ('# tblspecialization td: contiene (' slabel + $ + ')') de longitud.) { \t \t \t alert ('Una especialización de la misma tipo y meses ya han sido ingresados. '); \t \t \t return false; \t \t} grande hasta por su ayuda – SimonDowdles

+0

1+ a usted para su ayuda y tiempo y simple @webfac respuesta efectiva – SimonDowdles

+0

: Me alegro de poder ayudar a :-) –

2

Le sugiero que mantenga sus datos en alguna estructura de datos (una matriz (asociativa) por ejemplo). Por lo tanto, verificará los datos en la estructura, en lugar de en el DOM.

+0

Me gusta mucho este enfoque y estoy seguro de que es una mejor práctica, pero para este escenario todo el código ya está estructurado de cierta manera, aunque no de la mejor manera, necesitaba una solución que simplemente podría 'enchufar' en 'a la lógica actual. ¡Muchas gracias por su guía!Muy apreciado – SimonDowdles

+0

1+ para su ayuda y tiempo – SimonDowdles

1

En pocas palabras, el siguiente código en el controlador click() debería ayudarlo en su situación; que pueda see the whole code in action:

$(function(){ 
    $("#btn").click(function(){ 
     var table = $("#tblspecializations"); 
     var firstTd = $("td:first", table); 
     var secondTd = firstTd.next(); 

     if(firstTd.text() == $("#dropdown").val() && secondTd.text() == $("#num").val()) 
      alert("Error: You're trying to add the same entry"); 
    }); 
}); 

Breve explicación: Mediante el uso de td:first en el selector, que está recibiendo la primera columna de la tabla, y mediante el uso de la función next(), su conseguir su hermano, a saber, la segunda columna.

+0

esto también me funciona, sin embargo, encontré que la respuesta de Andy E es la solución más corta. ¡Gracias por tu tiempo! No pasa desapercibido – SimonDowdles

+0

1+ para su ayuda y tiempo – SimonDowdles

+0

@webfac No hay problema; de nada, y gracias por el voto favorable. –

Cuestiones relacionadas