日期:2014-05-17  浏览次数:20725 次

在js里动态增加一个select元素,一个textbox。改变select的选项后,怎么找到对应的textbox并赋值?
本帖最后由 charlesxu 于 2012-11-30 16:41:44 编辑 页面上有个按钮,每点一次,增加一个div,里面有一个select和一个textbox。

当改变select的选项时,也就是onchange事件被触发时。怎么找到这个select对应的textbox,并给textbox赋值?

可能会新增无数个div-select-textbox框,这些新增的select都触发同一个onchange事件。


我想在select的onchange事件被触发时,将这个select对象作为参数传递给被触发的函数,然后在函数里找到他的父元素(那个div),然后再找到那个子元素(textbox),然后赋值,这样做行吗?

代码在下面,怎么得到那个select的父元素div,再找到div的子元素textbox呢?

function onchange_addr(flag_conf){
if(flag_conf == "res_addr")
$("#txt_res_ip2").value("192.168.0.1");
}



<select id="comb_res_addr" style="width:100px;" onchange="onchange_addr(this.value)">
    <option value="res_addr">源地址</option>
    <option value="res_addr_domain">源地址段</option>
</select>
<input type="text" style="width:100px;" id='txt_res_ip2' value="">

------最佳解决方案--------------------
onchange="onchange_addr(this)"



function onchange_addr(obj){
   if($(obj).val() == "res_addr")
   $(obj).next().val("192.168.0.1");
}

------其他解决方案--------------------
children([expr]) 
closest([expr]) 
find(expr) 
next([expr]) 
nextAll([expr]) 
nextUntil([expr]) 
offsetParent() 
parent([expr]) 
parents([expr]) 
parentsUntil([expr]) 
prev([expr]) 
prevAll([expr]) 
prevUntil([expr]) 
siblings([expr]) 
这里面有你需要的
------其他解决方案--------------------
引用:
引用:XML/HTML code??1onchange="onchange_addr(this)"

JavaScript code??1234function onchange_addr(obj){   if($(obj).val() == "res_addr")   $(obj).next().val("192.168.0.1")……


如果你的input的id格式都是“txt_res_”的话
那就用$(obj).siblings("[id^=txt_res_")找到他
------其他解决方案--------------------
我这样写对吗?我对js的语法不熟。得到那个textbox的对象后赋值的语句对吗


function onchange_addr(flag_conf,txtobj){
    if(flag_conf == "res_addr")
        $("txtobj").value("192.168.0.1");//这句是这样写吗?
}



<select id="comb_res_addr" style="width:100px;" onchange="onchange_addr(this.value,$(this).parent('#txt_res_ip2'))">
    <option value="res_addr">源地址</option>
    <option value="res_addr_domain">源地址段</option>
</select>
<input type="text" style="width:100px;" id='txt_res_ip2' value="">

------其他解决方案--------------------
楼主说的textbox是哪个是select下面的<input type="text" style="width:100px;" id='txt_res_ip2' value="">这个吗。是这个的话不是有id了吗。
直接$("#txt_res_ip2").val("192.168.0.1");
------其他解决方案--------------------
这个是动态增加的,新增的div-select-textbox的id也是txt_res_ip2,怎么知道是哪个div框里的select变化了呢?又相应的要改那个textbox里的值呢?
------其他解决方案--------------------
一定会添加在select元素的后面吗。如果是添加一个还是多个到select元素后面。