模拟文本框单击以获得焦点

时间:2010-12-16 09:48:16

标签: javascript click simulate

我正在尝试使用以下代码在单击按钮时触发文本框上的click事件,因为focus()函数在IE8中不起作用

function simulateClick(elm) {
  var evt = document.createEvent("MouseEvents");
  evt.initMouseEvent("click", true, true, window,
      0, 0, 0, 0, 0, false, false, false, false, 0, null);
  var canceled = !elm.dispatchEvent(evt);
  if(canceled) {
     // A handler called preventDefault
     // uh-oh, did some XSS hack your site?
  } else {
     // None of the handlers called preventDefault
     // do stuff
  }
}

如果元素类型为复选框但不是文本框,此代码可以正常工作,是否有任何我可能需要添加的内容?

1 个答案:

答案 0 :(得分:0)

这是焦点代码

function ResponseEnd(sender, args) {
        if (args.get_eventArgument().indexOf("Filter") != -1) {
            var grid = document.getElementById("<%= radGridEnquiries.ClientID %>");
            var label =  $(grid).children("table").children("tbody").children(".rgRow").children("td:has(span)").children("span")[0];
            if (label != null) {
                label.focus();
            }
            else {
                var noRecTemp = $(grid).children("table").children("tbody").children("tr.rgNoRecords").children("td:has(div)").children("div");
                noRecTemp.focus();
            }
        }

        if (postInProgress)
            postInProgress = false;
    }

真实情况是我在Telerik RadGrid中设置了一些文本框作为过滤器并且没有过滤器图标但是当用户发布过滤器并且在IE8中完成请求时,过滤器文本框仍然具有焦点,阻止用户输入新的过滤器,除非再次手动点击文本框

P.S。很抱歉,如果这篇文章被视为答案,但无法使用正确的缩进代码更新此问题。感谢