1

我有一个visualforce页面(Salesforce),我试图捕捉用户在文本字段中按下回车键并触发按钮点击。

这是我的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 key==13 条件之上,它可以正常触发。它只是在 if key==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)" 

在文本框上。有没有办法不显眼地做到这一点?

4

2 回答 2

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. 否则,按钮单击可能会执行两次。

http://jsfiddle.net/2adPe/3/

于 2012-08-20T20:58:02.890 回答
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;                      
    }    
});
于 2012-08-21T02:55:05.390 回答