如何始终将焦点保持在文本框中

时间:2013-10-21 13:26:09

标签: javascript html

我创建了一个包含两个div的HTML页面。左边的div(页面的90%)是ajax结果的目标。右边的div(页面的10%)包含一个文本框。

页面的想法是在文本框中输入一个部件号(通过条形码扫描仪)并显示与该部件号匹配的图纸,显示在左侧div中。

我完成了所有这些工作。没问题。

我无法弄清楚的是,如何在绘图加载后将焦点返回到文本框。

图形作为对象加载,如下所示:

<div id="viz">
      <object classid="clsid:A662DA7E-CCB7-4743-B71A-D817F6D575DF" width="640" height="480">
         <param name="src" value="name_of_file.dwf" />
         <param name="wmode" value="transparent" />
         <param name="UserInterfaceEnabled" value="false" />
         <param name="NavigatorDocked" value="true" />
         <param name="ToolbarVisible" value="false" />
         <embed width="100%" height="100%" wmode="transparent" src="<?php echo $drawingfullpath;?>" ></embed>
      </object>
</div>

(对于任何保持分数的人来说,该对象是Autodesk DWF查看器。它的行为很像flash,但不接受所有相同的参数)。

始终将焦点放在文本框中的最佳方法是什么?因为操作员将使用条形码扫描仪,所以如果焦点丢失,我宁愿不要让鼠标点击回文本框。

我宁愿不使用jquery,因为对于这样一个简单的请求来说似乎有些过分。但是,如果jquery是唯一的方式来实现这一点,那就没关系。


更新

小提琴(http://jsfiddle.net/g9YxB/7/)已根据@subin的最新建议进行了更新。

一旦物体加载,焦点仍然会丢失。但是,如果单击远离页面然后单击后退,则焦点位于它所属的位置(在文本框中)。这必须是一个线索,对吧?

2 个答案:

答案 0 :(得分:4)

使用setInterval:

setInterval(function(){
 var focusbox;
 focusbox = document.getElementById("part_to_search");
 focusbox.focus();
});

Jsfiddle http://jsfiddle.net/g9YxB/10/

答案 1 :(得分:3)

使用jQuery看起来像这样:

$(function() {
     // Focus on load
     $('.scanner').focus();
     // Force focus
     $('.scanner').focusout(function(){
         $('.scanner').focus();
     });
     // Ajax Stuff
     $('.scanner').change(function() {
         $.ajax({
             async: true,
             cache: false,
             type: 'post',
             url: '/echo/html/',
             data: {
                 html: '<p>This is your object successfully loaded here.</p>'
             },
             dataType: 'html',
             beforeSend: function() {
                 window.alert('Scanning code');
             },
             success: function(data) {
                 window.alert('Success');
                 $('.objectWrapper').append(data);
             },
             // Focus
             complete: function() {
                 $('.scanner').val('').focus();
             }
        });
    });
});

jsFiddle示例:http://jsfiddle.net/laelitenetwork/fuMYX/5/

P.S:jQuery讨厌讨厌;)。