1

テキストフィールドでEnterキーを押してボタンクリックを実行するユーザーをキャプチャしようとしている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 ステートメントを入力していることを確認しました。また、 if key==13 条件の上に .click() アクションを移動しようとしましたが、正常に起動します。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. そうしないと、ボタンのクリックが 2 回実行される可能性があります。

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 に答える