有2个控件,。imagebutton textbox
我想输入完textbox的内容后回车自动执行 imagebutton
我的情况是  当我输完内容 用鼠标点imagebutton控件后,可以完成跳转和内容显示
但是        当我输完内容,回车 ,就出现索引出界的错误!
郁闷了 ,什么原因哦,我用断点调试过,执行步骤也对的,但就是最后会弹出一个错误。textbox我是这么改的  
 onkeypress="if(event.keyCode == 13) document.getElementById('ibSearchWish').click();"
focus也试过。。没用

解决方案 »

  1.   

    在.cs文件的 pageload 方法中 用比request大的作用域将textbox的值保存起来,保存之前先判断textbox的值为空时不要保存,然后在取值.不然就会索引越界!
    因为回车键相当于提交表单,而ID为ibSearchWish的imagebutton肯定是服务器控件,所以在textbox中按回车键,相当于提交了两次表单,当第一次尚未提交完成时,这时textbox的值刚好为空,紧接着又提交了一次,所以在textbox中按回车键提交时,取到textbox的值应该为空.所以最好用Session将textbox的值的提交时保存起来
      

  2.   

    建议用一个全局变量或cookie,session什么的保存当前状态下的值。
    试试看吧
      

  3.   

    你可以找找,在Asp.net的页面中,可以设置一个属性,让页面中回车后会以指定的事件提交。
      

  4.   

    textbox改
    onkeypress="if(event.keyCode == 13) {document.getElementById('ibSearchWish').click();event.returnValue=false;}" 1 由于textbox有焦点的时候,html标准默认有回车信号就postback,而这个时候的产生的postback是不含有button的和postback有关的信息的。
    2 假如在你开始的js语句基础上在click()后面加上一个alert语句,你会发现实际上按钮的后台代码执行了也执行了跳转,但是最后还是回到了起始页面。
    3 不加alert语句则不执行按钮点击后台代码由此我推论出1 假如不加alert语句可以认为按钮点击的产生postback和输入框默认的postback同时发生,而ie可能只认输入框的postback,而忽略了按钮的postback。
    2 由于后加的alert语句将输入框产生的回传滞后了,使得其回传晚于按钮点击产生的回传,因此就会产生两次回传,因此程序会先执行跳转,然后执行输入框的postback,并将最后postback的请求响应返回给客户端。而后者不会执行if(!IsPostback)里面的东西。