我有一个visualforce页面(Salesforce),我试图捕获用户按下文本字段中的Enter并点击一个按钮。
这是我的jquery代码:
$(document).ready(function() {
$("#thisPage\\:theForm\\:siteNumber").keypress(function() {
if(window.event){
key = window.event.keyCode; //IE, chrome
}
else{
key = e.which; //firefox
}
if(key == 13) {
$("#thisPage\\:theForm\\:siteButton").click();
}
});
});
非常奇怪,我已经验证了密钥等于13并且它进入了if语句。我也尝试将.click()动作移到if键== 13条件上方,并且它会很好。它只是在我知道它进入的if键== 13条件内不起作用。
我已经在这个简单的小提琴中重新创建了它的基本功能,但当然它运行良好:http://jsfiddle.net/2adPe/
感谢任何帮助!
更新:
我发现这会起作用
function noenter(e){
if(window.event){
key = window.event.keyCode; //IE, Chrome
}
else{
key = e.which; //firefox
}
if(key == 13) {
document.getElementById('thisPage:theForm:siteButton').click();
return false;
}
else{
return true;
}
}
带
onkeypress="return noenter(event)"
文本框上的。有没有办法不引人注意地做到这一点?
答案 0 :(得分:4)
尝试使用jQuery Attribute Ends With Selector参考您的元素ID。
像这样:
$("[id$='input1']").on("keypress",function(e) { // e is the current event
if(e){
key = e.keyCode; // IE, chrome
}
else{
key = e.which; // firefox
}
if(key == 13) {
e.preventDefault(); // prevent a form submit when pressing enter (on IE)
$("[id$='siteButton']").click(); // simulate a click of the siteButton
}
});
此外,如果key == 13
,您还需要阻止默认操作。否则,按钮单击可能会执行两次。
答案 1 :(得分:1)
终于搞定了!我必须从.click()之前删除e.preventdefault(),并在停止发生默认操作的末尾添加return false。
$('input[name$="siteNumber"]').keypress(function() {
if(window.event){
key = window.event.keyCode; //IE, chrome
}
else{
key = e.which; //firefox
}
if(key == 13) {
$('input[name$="siteButton"]').click();
return false;
}
});