Estimados;
Mi problema es que no sé, y no encuentro info al respecto, para validar un formulario que lo tengo dentro de un ciclo do-while (en realidad son dos ciclos anidados), por lo cual el formulario se replica para cada instancia de la consulta. El jQuery que lo valida y el Ajax que envia la info sirve para el caso cuando es un sólo formulario, no formularios generados dinámicamente (me refiero generandolos usando la instancia do-while).
Por lo poco que sé (se debe notar!!) el problema es que se necesita asignar un índice, tb dinámico a la función Js para poder distinguir cada formulario.
Agradecería enormemente cualquier orientación. Si no estoy muy perdido y el tema es lo del id único, no sé como agregarlo al Script que tengo.
Adjunto mi código, a ver se se logra entender mejor.
Este extracto del código es un archivo que está inserto dentro de un ciclo do-while anidado dentro de otro ciclo do-while, la razón de eso, creo que es harina de otro costal.
Código PHP:
Ver original<div class="new-com-bt">
<span>Write a comment ...</span>
</div>
<div class="new-com-cnt">
<input type="hidden" id="name-com" name="name-com" value="<?php echo ObtenerNombreFull_Usuario($_SESSION['MM_IdUser']); ?>" />
<input type="text" id="mail-com" name="mail-com" value="" placeholder="Your e-mail adress" />
<textarea class="the-new-com" placeholder="Ingresa tu comentario"></textarea>
<div class="bt-add-com">Post comment</div>
<div class="bt-cancel-com">Cancel</div>
</div>
<div class="clear"></div>
</div><!-- end of comments container "cmt-container" -->
Código Javascript
:
Ver original<script type="text/javascript">
$(function(){
//alert(event.timeStamp);
$('.new-com-bt').click(function(event){
$(this).hide();
$('.new-com-cnt').show();
$('#name-com').focus();
});
/* when start writing the comment activate the "add" button */
$('.the-new-com').bind('input propertychange', function() {
$(".bt-add-com").css({opacity:0.6});
var checklength = $(this).val().length;
if(checklength){ $(".bt-add-com").css({opacity:1}); }
});
/* on clic on the cancel button */
$('.bt-cancel-com').click(function(){
$('.the-new-com').val('');
$('.new-com-cnt').fadeOut('fast', function(){
$('.new-com-bt').fadeIn('fast');
});
});
// on post comment click
$('.bt-add-com').click(function(){
var theCom = $('.the-new-com');
var theName = $('#name-com');
var theMail = $('#mail-com');
if( !theCom.val()){
alert('You need to write a comment!');
}else{
$.ajax({
type: "POST",
url: "ajax/add-comment.php",
data: 'act=add-com&id_post='+<?php echo $id_post; ?>+'&name='+theName.val()+'&email='+theMail.val()+'&comment='+theCom.val(),
success: function(html){
theCom.val('');
theMail.val('');
theName.val('');
$('.new-com-cnt').hide('fast', function(){
$('.new-com-bt').show('fast');
$('.new-com-bt').before(html);
})
}
});
}
});
});
</script>