哟!
我在我的网站上实现了以下功能,它允许用户向上/向下按以流畅地滚动页面的不同部分:
// CONTROL TOP NAVBAR WITH UP/DOWN ON KEYBOARD
$(document).keydown(function(e) {
var p = $("li.active");
if (e.keyCode === 38) {
e.preventDefault();
p.prev().find("a").click();
} else if (e.keyCode === 40) {
e.preventDefault();
p.next().find('a').click();
}
});
这工作正常。但是,我在页面上也有一个联系表。当用户在联系表单中输入时,我希望他们能够在文本框中使用键盘向上/向下移动以正确导航。但是,它目前仍控制导航栏。
我的联系表格的 ID 为#contactform。代码在这里:
<form name="contactform" id="contactform" method="post" action="/contact/" _lpchecked="1">
<ul class="form-block">
<!-- HONEYPOT -->
<li class="on-no-robots" style="height:0px; text-indent:-9999px; font-size:0px; overflow:hidden;">
<label>Humans Don't Submit This!! If you can see this, you don't have CSS, and you scare me. This is just here to filter out automated comments!</label>
<input name="robotest" id="robotest" type="text" />
</li>
<!-- HONEYPOT -->
<li class="third">
<label for="name">Name</label>
<input type="text" name="name" id="name" value="" class="required" />
</li>
<li class="third">
<label for="email">Email Address</label>
<input type="email" name="email" id="email" value="" class="required email" />
</li>
<li class="third">
<label for="phone">Phone Number</label>
<input type="text" name="phone" id="phone" value="" />
</li>
</ul>
<h3>How can we help you?</h3>
<ul class="form-block">
<li class="full">
<textarea name="comments" id="comments" class="required"></textarea>
</li>
<li>
<input id="submitButton" type="submit" value="Talk to us" />
</li>
</ul>
</form>
是否可以做一个条件语句说“如果#contactform#name, #contactform#email, #contactform#comments 是焦点,禁用这个功能”?
我在 jquery 方面相当糟糕,但这是我的尝试:
$(document).keydown(function(e) {
if ($("#contactform input", "#contactform textarea").is(":focus")){
return;
}
else{
var p = $("li.active");
if (e.keyCode === 38) {
e.preventDefault();
p.prev().find("a").click();
} else if (e.keyCode === 40) {
e.preventDefault();
p.next().find('a').click();
}
}
});
目前,向上/向下箭头功能可以正常工作,尽管条件语句是错误的。我在这里错过了什么?