vba的 ie控制 onchange

在选择网页下拉框是 城市下拉框
3级城市
相当于 广东省 中山市 三乡镇
选择了一级才会显示二级下拉框
选择了二级才会显示三级下拉框

Set jd = .document.all.tags("select")
For q = 0 To jd.Length - 1
If InStr(jd(q).outerHTML, "data-level-index") > 0 Then
jd(q).Value = Sheets("sheet4").[c1]
jd(q).FireEvent ("onchange") '这个不会触发事件显示二级下拉框
Exit For
End If
Next
只能对一级赋值城市名 这样就不能提交 一定要精确到三级城市才可以 求问各位大神

有什么办法可以触发二级,因为有的网站 fireEvent("onchange") 有效
网站我审查元素是 未被选中的是 display none
<input name="edit[city]" package="mainland" type="hidden" value="">
<select data-level-index="0" class="x-select">
<select data-level-index="1" class="x-select" style="display: none;"></select>
<select data-level-index="2" class="x-select" style="display: none;"></select>

还有什么办法可以触发后面的下拉框弹出来呢

Set jd = .document.all.tags("select")
set jd1=nothing
set jd2=nothing
set jd3=nothing
For q = 0 To jd.Length - 1
    If InStr(jd(q).outerHTML, "data-level-index") > 0 Then
        if jd(q).getAttribute("data-level-index")="0" then set jd1=jd(q) '一级select
        if jd(q).getAttribute("data-level-index")="1" then set jd2=jd(q) '二级select
        if jd(q).getAttribute("data-level-index")="2" then set jd3=jd(q) '三级select
    End If
Next
'第一种思路:对一级赋值后,执行一下onchange事件
jd1.value=Sheets("sheet4").[c1]
jd1.onchange()
jd2.value=Sheets("sheet4").[c2]
jd2.onchange()
jd2.value=Sheets("sheet4").[c3]
'第二种思路:模拟操作下拉框,注意必须下拉框里面有符合你要选中的内容的项
SelByValue jd1,Sheets("sheet4").[c1] '选择一级下拉框
SelByValue jd2,Sheets("sheet4").[c2] '选择二级下拉框,假设选项在c2
SelByValue jd3,Sheets("sheet4").[c3] '选择三级下拉框,假设选项在c3
'第三种思路:直接将第二、三级修改成可见,然后直接赋值
jd1.value=Sheets("sheet4").[c1]
jd2.style.display="block" '修改二级为可见
jd2.value=Sheets("sheet4").[c2]
jd3.style.display="block" '修改三级为可见
jd3.value=Sheets("sheet4").[c3]

sub SelByValue(jd0,v)  '选中select中指定内容的某项
    for each op in jd0.options
        if op.text=v then 
            op.selected=true
            exit for
        end if
    next
end sub

 由于未测试,可能有错误,请指出

追问

已经用 jd(q).fireevent("change")触发ok了!

温馨提示:答案为网友推荐,仅供参考
相似回答