visualforce页面javascript按钮单击无法正常工作

时间:2012-08-20 15:41:10

标签: javascript jquery salesforce visualforce

我有一个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)" 
文本框上的

。有没有办法不引人注意地做到这一点?

2 个答案:

答案 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,您还需要阻止默认操作。否则,按钮单击可能会执行两次。

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

答案 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;                      
    }    
});