Pregunta

Continuando adoptando mi código para trabajar con IE...

tengo un escondido div que contiene un formulario para editar cierta información.Cuando el usuario selecciona el elemento para editar, se muestra este div y los campos se completan con la información del elemento.Esos divs (en términos simplificados) se ven así:

<div id="editform">
<form action="" method="post" id="qform" name="qform">
    First param: <input name="field1" id="field1"/> <br/>
    Second param: <input name="field2" id="field2"/> <br/>
    ...

    <input type="hidden" name="qid" id="qid" value=""/>

    <img id="submit" src="..." alt="..." title="..." />
</form>

Utilizo jquery para establecer los valores en los campos.Mi función para abrir el div de edición se parece a esto:

function edit_item(item_id) {
    item = get_item(item_id);    //this will return a JS object
    $('#field1').val(item.property1);
    $('#field2').val(item.property2);
    ...
    $('#qid').val(item_id);
    $('#submit').click(function() {
        alert($('#qid').val());
        $('#qform').ajaxSubmit();
    });
}

Todo esto funciona bien en FF, Opera, Webkit e IE 9, sin embargo, en IE7 e IE8 tengo un problema extraño.puedo ver el item_id está configurado correctamente en el edit_item función, sin embargo, tan pronto como se completa esa función, el valor de entrada oculto (qid) se restablece a la cadena vacía.Cuando el formulario se envía mediante ajax, la alerta muestra que el valor es una cadena vacía a pesar de que está configurado correctamente.Curiosamente, todos los demás campos están bien.Y funciona correctamente en IE 9.

¿Que me estoy perdiendo aqui?Muchas gracias de antemano.

¿Fue útil?

Solución

Esto es totalmente estúpido y, sin embargo, no debería ser así:

$('#field1').val(item.property1);

no funcionó.Todavía

$('#field1').attr("value", item.property1);

funcionó bien.Lo dejo así.

Otros consejos

La solución para IE sin JQuery en JavaScript puro no parece demasiado complicada:

document.getElementById(id).setAttribute('value', value);

Además de la respuesta de Aleks G, descubrí que value atributo no debe definirse implícitamente en el elemento oculto para jQuery .setAttr() y .val() Funciona sin problemas en IE8.

Consulte aquí para obtener más detalles:¿El configurador jQuery .val() no funciona?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top