无法获取服务器注册的值

时间:2013-06-01 13:10:37

标签: html excel events vba combobox

我正在尝试在Excel中创建一个名为SpectrumLive的共享交易网站的VBA界面。

我可以在网站上填写相关表格中要购买的股票数量。但是,当我单击“下订单”按钮时,它会记住我输入的最后一个手动值,而不是VBA输入的值。 这就像我需要引发一个事件或类似的事情让服务器端注册该值。

该字段看起来像一个带有可编辑文本字段的组合框。您可以通过选择组合框控件中的小箭头来实际选择预定义值。但是,脚本将值直接输入到文本字段中(就像我也可以手动执行)。

我已经在这个问题上工作了很长一段时间,而且我的想法已经用完了。

我使用的VBA是:

theDocument.getElementsByName(“ordertype”)。Item(i).value =“88”

用于设置要交易的股票数量为88。

我试图通过以下方式触发OnChange事件:

theDocument.getElementsByName(“ordertype”)。Item(i).FireEvent(“onchange”)

但没有运气。

页面特定部分的HTML代码如下所示:

<div id="MenuMgr_WM_view4_widgetbfcca409xc930x42d5x8d00x04a83ed68e5f_ordertab_amountrow" class="formrow">

<div id="MenuMgr_WM_view4_widgetbfcca409xc930x42d5x8d00x04a83ed68e5f_ordertab_amountrow_error" class="error_field">

<span class="inline amount">

<label class="label" title="Quantity">Quantity:</label>

<div class="amount_type input selector" style="display:none;" name="MenuMgr$WM_view4$widgetbfcca409xc930x42d5x8d00x04a83ed68e5f$ordertab$amountrow$ctl00">

<span id="MenuMgr_WM_view4_widgetbfcca409xc930x42d5x8d00x04a83ed68e5f_ordertab_amountrow_amount" name="MenuMgr$WM_view4$widgetbfcca409xc930x42d5x8d00x04a83ed68e5f$ordertab$amountrow$amount">

<div id="AmountSelectorContainer">

<span id="MenuMgr_WM_view4_widgetbfcca409xc930x42d5x8d00x04a83ed68e5f_ordertab_amountrow_amount_AmountSelectorControl" name="MenuMgr$WM_view4$widgetbfcca409xc930x42d5x8d00x04a83ed68e5f$ordertab$amountrow$amount$AmountSelectorControl">

<div id="AmountSelectorDropDownList" class="left input selector" name="MenuMgr$WM_view4$widgetbfcca409xc930x42d5x8d00x04a83ed68e5f$ordertab$amountrow$amount$AmountSelectorControl$AmountSelectorDropDownList">

**<input class="inp aright" type="text" value="" name="ordertype" title="">**

<div class="btns">

</div>

</span>

</div>

</span>

</span>

<div class="formrow amount_info" style="display: none;"> </div>

即使上面名为“ordertype”的字段中的“值”是“”SpectrumLive显示数量为88(我有Firebug显示哪个字段代表组合框的文本字段)。

非常感谢任何帮助!

谢谢,

1 个答案:

答案 0 :(得分:0)

<input class="inp aright" type="text" value="" name="ordertype" title="">

上面的html是一个文本框,要设置它的值,你可以使用下面的代码。

 Set i_Order = theDocument.getElementsByName("ordertype")
 i_Order.Value = "88"

OR

 Set i_Amt = theDocument.getelementbyid("AmountSelectorDropDownList")
 set i_Order = i_Amt.NextSibling  '(put a breakpoint here)
 i_Order.Value = "88"

(转到即时窗口并将此文本?i_order.OuterHTML放在调试模式下,如果你有ordertype文本框,它会通知你。如果它不起作用,你可以尝试这个set i_Order = i_Amt.NextSibling.NextSibling

此外,我没有看到附加到文本框的任何javascript更改事件,不需要使用FireEvent。