Página 1 de 1

_IEFormElementGetValue

Publicado: 26 May 2011, 22:13
por joaquin
Hola!!
Necesito ayuda con la siguiente cuestión:
Quisiera obtener el valor de un elemento tipo combo de un IEForm.
En el Ejemplo, con "_IEFormElementGetValue " obtengo el valor "7" y el valor que quiero obtener es "BALEARES" . Para ello se me ocurrió hacerlo de la siguiente forma:

Código: Seleccionar todo

********************************* HTML *******************************************************************************
<select name="provinceId" onchange="onChange('province');"><option value="3">ALICANTE</option>
<option value="2">ALBACETE</option>
<option value="4">ALMERIA</option>
<option value="33">ASTURIAS</option>
<option value="6">BADAJOZ</option>
<option value="7" selected="selected">BALEARES</option>
***********************************************************************************************************************
$oSelect = _IEFormElementGetObjByName ($oForm, "provinceId")
$valor=_IEFormElementGetValue ($oSelect)
$source = _IEBodyReadHtml($oIE)
$result = StringInStr($source, "7")
$var = StringMid($source, $result,20)
$aArray1 = _StringBetween($var, '>', "</",1)
MsgBox(0, "Provincia", _ArrayToString($aArray1,@TAB, 0, 1))
El problema es que al buscar el valor "7" con la función "StringInStr" captura el primer valor que coincide con "7", al recorrer el body de la página. Por ejemplo si hubiera un valor "74" anterior lo captura, por lo que el método no resulta fiable. Si se precisa más la cadena con: "<option value="7"" no obtengo ningún resultado. Creo que tiene que ver con las comillas, pero ya he probado con poner dobles, quitarlas,...(¿?)
La cuestión que planteo es si hay otra alternativa para obtener el valor de la provincia seleccionada y no su código, o inluso algo del estilo ".selected"

Saludos!!!

Re: _IEFormElementGetValue

Publicado: 27 May 2011, 02:01
por Chefito
Pues yo creo que hay varias formas de hacerlo. Una puede ser esta:

Código: Seleccionar todo

$oSelect=_IEGetObjByName($oIE, "provinceId")
MsgBox(0,"",$oSelect.item($oSelect.selectedindex).innertext)
$oSelect.selectedindex te da el número de option seleccionado, y $oSelect.item(numero).innertext te da el texto del item (opcion) que le indiques en el número. Juntando las dos cosas ya lo tienes :smt023 .

Respecto a lo de las dobles comillas, prueba a meter el texto entre comillas simples para que te coja las dobles comillas: '<option value="7"'.

Saludos.

Re: _IEFormElementGetValue

Publicado: 27 May 2011, 21:28
por joaquin
Genial!!! Gracias Chefito por la eficaz respuesta !!
La solución es perfecta, sencilla y fiable ...Realmente me estaba complicando... :smt005
Thanks :smt023