我创建了一个包含两个 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>
Run Code Online (Sandbox Code Playgroud)
(对于任何记分的人,该对象是 Autodesk DWF 查看器。它的作用很像 Flash,但不接受所有相同的参数)。
始终将焦点放在文本框中的最佳方法是什么?因为操作员将使用条形码扫描仪,所以如果失去焦点,我宁愿他们不需要鼠标点击回到文本框。
我宁愿不使用 jquery,因为对于这样一个简单的请求来说,这似乎有点矫枉过正。但是,如果 jquery 是完成此操作的唯一方法,那很好。
fiddle ( http://jsfiddle.net/g9YxB/7/ ) 已更新为@subin 的最新建议。
一旦对象加载,焦点仍然丢失。但是,如果您单击离开页面然后单击返回,则焦点位于它所属的位置(在文本框中)。这应该是个线索吧?
使用 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();
}
});
});
});
Run Code Online (Sandbox Code Playgroud)
jsFiddle 示例:http : //jsfiddle.net/laelitenetwork/fuMYX/5/
PS:讨厌 jQuery 的人会讨厌 ;)。
| 归档时间: |
|
| 查看次数: |
17653 次 |
| 最近记录: |