Hola,
Resulta que estoy queriendo crear un efecto parecido al que tiene Access, con sus listas(select).
Lo que he hecho hasta ahorita es que tengo las siguientes funciones:
Código:
var url = "detalles.php?opcion=lista_config_ventas&tipo=";
function handleHttpResponse() {
if (http.readyState == 4) {
if(http.status==200)
{
var results=http.responseText.split("-");
var selObj = document.getElementById("clasificacion");
for (var count = 0; count < results.length; count++)
{
textValue = (results[count]);
optionItem = new Option( textValue, textValue);
selObj.options[count] = optionItem;
}
}
}
}
function requestClasifica(ID,valor) {
var sId = ID;
http.open("GET", url + escape(sId) + "&valor=" + valor , true);
http.onreadystatechange = handleHttpResponse;
http.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=utf-8')
http.send(null);
}
function procesar_form(form,esconder)
{
var valor = form.another_clasi.value;
var tipo = form.tipo.value;
requestClasifica(tipo,valor);
HideContent(esconder);
}
function HideContent(d) {
if(d.length < 1) { return; }
document.getElementById(d).style.visibility='hidden';
}
Y aqui tengo el formulario y la lista
Código:
<div id="clas" style="posiction:absolute;visibility:visible">
<select id="clasificacion" name="clasi" size="1" class="lista">
</select> <a href="javascript:add('lista_clasi','another_clasi');"><img src="img/add.gif" border="0"></a><a href="javascript:borrar_elemento('clasificacion','cclasificacion_eng')"><img src="img/delete.gif" border="0"></a>
</div>
<div id="lista_clasi" style="position:absolute;visibility:hidden">
<form name="f1" method="GET">
<input type="hidden" name="tipo" value="cclasificacion_eng">
<input type="text" id="another_clasi" name="another_clasi" size="25" class="datos">
<input type="button" value="Agregar" onClick="procesar_form(this.form,'lista_clasi')" name="boton" class="boton">
<input type="button" value="Cancelar" onclick="HideContent('lista_clasi')" class="boton">
</form>
</div>
Esta funcion va a insertar un elemento y actualiza la lista, hasta ahi todo bien, el problema es cuando quiero borrar un elemento, lo que he hecho es crear una opcion en un archivo y ahi mandar a borrar. El elemento lo borra bien, pero al mandar a llamar la funcion para que me recargue los valores, me duplica el ultimo valor
Código:
function borrar_elemento(id,tipo)
{
var selObj = document.getElementById(id);
var selIndex = selObj.selectedIndex;
http3.open("GET", "detalles.php?opcion=borrar&nombre=" + selObj.options[selIndex].value, true);
http3.onreadystatechange = cargar1;
http3.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=utf-8')
http3.send(null);
}
function cargar1()
{
if (http3.readyState == 4) {
if(http3.status==200)
{
requestClasifica('cclasificacion_eng','vacio');
}
}
}
No he podido lograr averiguar porque me carga doble el ultimo valor de la lista, si alguien tiene algo mas sencillo y me puede ayudar les agradeceria mucho.
Saludos,
Jorge.