大神,教教我这是为什么。

wgf110120 2014-03-11 02:48:19

function select(txtid, ddlid)

{

debugger;

//本来这里的keyup事件始终没有弹出,原来是直接调用下面的myfunc()方法。

//解决办法是在keyup(里把方法重写一遍) 如下
//我本来的写法是 $("#<%=txtCompanyName.ClientID%>").keyup(myfunc());,结果这个方法没有启用。
//最后改成下面这样,就可以使用了。虽然问题解决了 ,但是还是希望明白是为什么。

$("#<%=txtCompanyName.ClientID%>").keyup(function () {



var data = $("#<%=txtCompanyName.ClientID%>").val();



var ddllevel = document.getElementById('<%=this.ddlCompanyName.ClientID %>');

for (var i = 0; i < ddllevel.options.length; i++) {



if (ddllevel.options[i].text.indexOf(data) != -1) {

ddllevel.options[i].selected = true;



break;

}

}

});



function myfunc()

{



//var data = document.getElementById("#<%=this.txtCompanyName.ClientID%>").value;

var data = $("#<%=txtCompanyName.ClientID%>").val();



var ddllevel = document.getElementById('<%=this.ddlCompanyName.ClientID %>');

for (var i = 0; i < ddllevel.options.length; i++)

{



if(ddllevel.options[i].text.indexOf(data)!=-1)

{

ddllevel.options[i].selected = true;



break;

}

}

}

}
...全文
252 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
keatkeat1987 2014-03-19
  • 打赏
  • 举报
回复
是的!!!!!
wgf110120 2014-03-18
  • 打赏
  • 举报
回复
引用 10 楼 keatkeat87 的回复:
$("#id").keyup(myfunc()); keyup 的参数应该是一个方法 ! 不是方法()吧 你()他就执行了耶,除非你的myfunc 还返回方法,或许才有效。 我有理解错你的问题吗?
你意思是$("#id").keyup(myfunc); 吗?
keatkeat1987 2014-03-11
  • 打赏
  • 举报
回复
$("#id").keyup(myfunc()); keyup 的参数应该是一个方法 ! 不是方法()吧 你()他就执行了耶,除非你的myfunc 还返回方法,或许才有效。 我有理解错你的问题吗?
wgf110120 2014-03-11
  • 打赏
  • 举报
回复
引用 8 楼 microlab2009 的回复:
我的意思是说你页面的textbox有触发keyup事件吗 在点击select方法后?你页面点击试试
是的,现在在点击select方法后有触发keyup事件
嘻哈大咖秀 2014-03-11
  • 打赏
  • 举报
回复
我的意思是说你页面的textbox有触发keyup事件吗 在点击select方法后?你页面点击试试
wgf110120 2014-03-11
  • 打赏
  • 举报
回复
引用 6 楼 microlab2009 的回复:
[quote=引用 5 楼 wgf110120 的回复:] 是先执行select(); 之后附加事件 我是动态给那个textbox附加的onkeyup事件
这样textbox附加上onkeyup事件了吗?[/quote] 如果我这样写("#<%=txtCompanyName.ClientID%>").keyup(function () { var data = $("#<%=txtCompanyName.ClientID%>").val(); var ddllevel = document.getElementById('<%=this.ddlCompanyName.ClientID %>'); for (var i = 0; i < ddllevel.options.length; i++) { 就可以了 但是如果这样$("#<%=txtCompanyName.ClientID%>").keyup(myfunc()); 就不行了 。
嘻哈大咖秀 2014-03-11
  • 打赏
  • 举报
回复
引用 5 楼 wgf110120 的回复:
是先执行select(); 之后附加事件 我是动态给那个textbox附加的onkeyup事件
这样textbox附加上onkeyup事件了吗?
wgf110120 2014-03-11
  • 打赏
  • 举报
回复
引用 4 楼 microlab2009 的回复:
function select(txtid, ddlid){
    myfunc();
}
这样直接执行就可以了 完全没必要再里面出发事件了 没什么意义啊
是先执行select(); 之后附加事件 我是动态给那个textbox附加的onkeyup事件
嘻哈大咖秀 2014-03-11
  • 打赏
  • 举报
回复
function select(txtid, ddlid){
    myfunc();
}
这样直接执行就可以了 完全没必要再里面出发事件了 没什么意义啊
wgf110120 2014-03-11
  • 打赏
  • 举报
回复
哦,是这样的。谢谢明白了。还有上面那个方法的问题是为什么。
螃蟹哥哥 2014-03-11
  • 打赏
  • 举报
回复
引用 1 楼 wgf110120 的回复:
//var data = document.getElementById("#<%=this.txtCompanyName.ClientID%>").value; var data = $("#<%=txtCompanyName.ClientID%>").val(); 还有这里。这两句话的意思应该是一样的吧,为什么第一个就取不到值,第二个就可以。
第一句是dom编程,根据id找元素是不需要加#号的,第二个是jquery编程,你可以去好好学习一下jquery的选择器,有点类似于ccs的选择器,根据id找元素是需要加#号的
wgf110120 2014-03-11
  • 打赏
  • 举报
回复
//var data = document.getElementById("#<%=this.txtCompanyName.ClientID%>").value; var data = $("#<%=txtCompanyName.ClientID%>").val(); 还有这里。这两句话的意思应该是一样的吧,为什么第一个就取不到值,第二个就可以。

87,902

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧