表单包含输入元素和提交按钮。按“提交”按钮会在浏览器的新选项卡中显示 pdf 文件。 如果按 Enter 键显示报告,焦点将移至提交按钮。选择报告参数标记后,需要再次单击输入元素才能向同一元素输入新值。
如何在按下 Enter 的位置保持焦点输入元素?
<form id="Form" class='form-fields' method='post' target='_blank'
action='Render'>
<input id='test' name='test' value='test' />
...
<input id='_submit' type='submit' value='Show report' />
</form>
使用了jquery、jqueryui、asp.net mvc2。
更新
我在表单中有 2 个具有相同名称的元素,以允许未选中的复选框提交:
<input type='hidden' value='false' name='Summary' />
<input type='checkbox' id='Summary' name='Summary' checked />
<select class="ui-widget-content ui-corner-all" id="_Report" name="_Report" size="10">
<option value="LV001">Report1</option>
<option value="LV003">Report2</option>
<option selected="selected" value="LV009">Report3</option>
</select>
我按照评论中的建议尝试了下面的代码。如果焦点位于复选框中,则不会恢复焦点。相反,选择元素是焦点。如何修复?
$("#Form input:not([type=submit]), textarea, select").focus(function () {
$('input').removeClass('hasFocus');
$(this).addClass('hasFocus');
});
最佳答案
如果您想返回到最后一个焦点项目,我认为您需要跟踪最后一个焦点项目。
像这样的东西可能会实现你正在寻找的东西:
$(function() {
var lastFocus = [];
$('#Form').find(':text,:radio,:checkbox,select,textarea').focus(function() {
lastFocus = $(this);
});
$('#Form').submit(function(){
if (lastFocus.length == 1)
lastFocus.focus();
// just to prevent the actual submit - remove this to enable submit
return false;
});
});
我还做了一个jsfiddle来测试:http://jsfiddle.net/Jht6C/
关于jquery - 如何将焦点保持在按 Enter 提交表单的输入元素上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7601362/