在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])
这里面有你需要的
------其他解决方案--------------------
如果你的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元素后面。