Ver Mensaje Individual
  #6 (permalink)  
Antiguo 29/04/2018, 11:24
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema con función Jquery

Supongo que lo de los submenúes son grupos de elementos dentro del formulario, algo como:

Código HTML:
Ver original
  1.     <div>
  2.         <!-- Elementos de la categoría 1 -->
  3.     </div>
  4.     <div>
  5.         <!-- Elementos de la categoría 2 -->
  6.     </div>
  7.     <div>
  8.         <!-- Elementos de la categoría 3 -->
  9.     </div>
  10.     <div>
  11.         <!-- Elementos de la categoría N -->
  12.     </div>
  13. </form>

Ahora, bien. Si en cada grupo tienes un <input> oculto con el id "productMainCategoryId", al momento de tratar de obtener el valor del mismo, siempre va a tomar al que se encuentre en la categoría o submenú 1 ya que, cuando hay más de un elemento con el mismo id en el mismo documento, solo se considera al primero y no a los demás debido a que el id debe ser un valor único en el documento. Además, si en cada categoría o submenú tienes un botón de envío, al estar dentro del formulario que agrupa a las demás categorías o submenúes, se procesará todo lo que se encuentre allí.

Lo ideal sería que tengas un formulario por cada elemento o bien podrías validar el contenido del área de texto de la categoría o submenú en donde se encuentra el botón de envío pulsado mediante la delegación del evento click a los botones de envío (y ya no el evento de envío al formulario) y, luego de cancelar la acción, buscar dentro del elemento padre que representa esa categoría o submenú al área de texto y campo oculto que se encuentre allí. Teniendo esto, podrás realizar la validación solo en dicha categoría o submenú, aunque semánticamente no sea lo adecuado.

Código Javascript:
Ver original
  1. $("[name=submitCustomizedData]").on("click", function(event){
  2.     event.preventDefault();
  3.  
  4.     var categoria = $(this).parent(), //El <div> que contiene al botón pulsado
  5.         textarea = categoria.find(".product-message"),
  6.         hidden = categoria.find("[type=hidden]"),
  7.         mensaje = categoria.find("small");
  8.  
  9.     //El resto de instrucciones
  10. });

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 29/04/2018 a las 13:23 Razón: Corrección de nombre, selector innecesario