【发布时间】:2013-01-13 15:24:11
【问题描述】:
在两个 ID 上的 jQuery keyup 上执行一个函数。
$('#supplier_name').keyup(function(){
clearTimeout(typingTimer);
if ($('#supplier_name').val) {
typingTimer = setTimeout(doneTyping, doneTypingInterval);
}
$.cookie("inputFocus", "#supplier_name");
});
在此之后提交表单。我想做 jQuery 。专注于导致 keyup 函数执行的 ID。
因此,如果我在提交表单后在#supplier_name 中输入了文本,我希望将重点放在那个上面。反之亦然#aircraft_type。
编辑:我正在尝试通过 cookie 执行此操作,但它似乎不起作用。
如何使用以下 jQuery 代码来做到这一点:
<script>
$(document).ready(function() {
$("#state").change(function () {
this.form.submit();
})
$.cookie("inputFocus").focus();
$("#supplier_name").val($("#supplier_name").val());
$("#aircraft_type").val($("#aircraft_type").val());
var typingTimer;
var doneTypingInterval = 800;
$('#supplier_name').keyup(function(){
clearTimeout(typingTimer);
if ($('#supplier_name').val) {
typingTimer = setTimeout(doneTyping, doneTypingInterval);
}
$.cookie("inputFocus", "#supplier_name");
});
$('#aircraft_type').keyup(function(){
clearTimeout(typingTimer);
if ($('#aircraft_type').val) {
typingTimer = setTimeout(doneTyping, doneTypingInterval);
}
$.cookie("inputFocus", "#aircraft_type"); });
function doneTyping () {
$("form").submit();
}
});
</script>
【问题讨论】:
-
我认为你的意思是
$('#supplier_name, #aircraft_type').val是$(this).val() -
您实际上是在提交导致新页面加载的表单。如果您使用 Ajax 调用提交表单内容会更容易。另一种方法是包含一个隐藏的表单字段并在那里设置焦点字段的 id 并在页面加载时重置焦点。但我真的会推荐 Ajax 解决方案。
-
@Dehalion 不幸的是,我没有运气从教程中弄清楚如何做到这一点。我想如果有人要“Ajaxify”我创建的一段代码,我会更好地理解它。你愿意接受挑战吗? (我可以创建另一个问题专门解决它并将其链接到您?)
-
我现在更新了代码以反映我最近的努力。我试图将 ID 存储在 cookie 中,然后专注于 cookie。但是,这似乎不起作用。
-
$.cookie()返回 cookie 值,您必须创建一个 jQuery 对象才能使用focus(),如下所示:$($.cookie("inputFocus")).focus()。您在 JS 控制台中遇到什么错误或什么也没发生?