我有一个包含复选框的ASP.NET控件。我希望焦点在单击时保留在此复选框上。这是我正在使用的:
<script type="text/javascript">
window.addEvent("domready", function() {
var acceptCheckId = $("<%= this.accept.ClientID %>").getElement("input");
acceptCheckId.addEvent("click", function() {
acceptCheckId.focus();
});
});
</script>
我可以将复选框元素放入acceptCheckId
变量中,但是当我点击它时,焦点不会改变。是什么给了什么?
如果我添加警报,则警报永远不会触发:
acceptCheckId.addEvent("click", function() {
alert("foobar");
acceptCheckId.focus();
});
答案 0 :(得分:0)
您的输出HTML是什么样的?不知道你的&lt; %%&gt;如何知道代码是什么错误内容是写的。
<script type="text/javascript">
window.addEvent("domready", function() {
var acceptCheckId = $("<%= this.accept.ClientID %>").getElement("input");
// $('elementId').getChildren('input');
// You can't put an entire element in there
acceptCheckId.addEvent("click", function() {
acceptCheckId.focus();
});
});
</script>
答案 1 :(得分:0)
尝试使用setTimeout
setTimeout(function(){
acceptCheckId.focus(); // this may execute ok
},200);
单击一个元素时,该元素将获得焦点,并且您现在无法聚焦其他元素,因为此元素将首先获得焦点,并且使用setTimeout
,可能会延迟某个时间,在此之后,你可以将焦点设置为任何元素。
查看点击执行顺序: 点击 - &gt;执行onclick功能 - &gt;获得焦点 - &gt;
在步骤2中,onclick函数,你将焦点设置为其他元素,但是,在执行onclick函数后,元素本身应该得到焦点,这是由web浏览器完成的!