4

押されたキーが「スペースバー」、キーコード32であるかどうかを確認するスクリプトが必要です。IEが他の関数名を使用していることに気付きました。

私はこことこれで見つかった多くの解決策を試しました:

event = event || window.event // IE does not pass event to the function
if(event == window.event){
    code = event.keyCode;
}else{
    code = event.which;
} 
if(code == '32') {}

しかし、それでもFirefoxでは機能しませんでした。

Firefoxで関数を間違って呼び出していると思います。スクリプト全体を見てください。

<textarea onkeydown="predicao(this);" cols="40" rows="10" id="test" onfocus="this.focus()"></textarea>
<input id="example" style="display: none;" onkeydown="javascript: insert(this);"/>

<script language="Javascript">
<!--

function predicao(objeto){
    comprimento = objeto.value.length;
    var antipenultimo = comprimento - 4;
    var input = objeto.value.substring(antipenultimo,comprimento);
    var output = "";
    for(i=0; i<input.length; ++i){
        if(output != "") output += ", ";
        output += input.charCodeAt(i);
    }
    if (output == "91, 91, 103, 32"){

        var preditor = document.getElementById('example');
        preditor.value = '';
        preditor.style.display = 'block';
        preditor.focus();
        preditor.select();
    }  
}
function insert(objeto){
event = event.which || window.event // IE does not pass event to the function
if(event == window.event){
    code = event.keyCode;
}else{
    code = event.charCode;
} 
    if(keynum == '32') {
        var texto = document.getElementById('test').value;
        texto += objeto.value+']]';
        $('#test').focus();
        document.getElementById('test').value = texto;
        objeto.style.display = 'none';
    }
}
$(document).ready(function(){
    var data = "Ab Aco Ado Ala Mano Cata Ca Obo Olo Po Poq".split(" ");
$("#example").autocomplete(data);});
</script>

私がやろうとしているのは-(名前はわかりません)-テキストエリア内の予測ヘルプ入力ツールです。jQueryオートコンプリートを使用します。ユーザーがtextarea(id = test)内に'[[g'と入力すると、オートコンプリート付きの入力が開かれるため(id = example)、'data'を検索します。ユーザーが目的のデータを見つけたら、スペースバーを押してデータをテキストエリアに挿入し、「]]」で閉じる必要がありますが、Firefoxでは機能しません。

(はい、JavaScriptとjQueryをまったく間違った方法で同じ要素に使用しています。これはあまり得意ではないため、Firefoxが機能した後で修正しようとします。)

4

4 に答える 4

5

編集

HMTL:

<textarea onkeydown="predicao(this);" cols="40" rows="10" id="test" onfocus="this.focus()"></textarea>
<input id="example" style="display: none;" onkeydown="insert(this, event);"/>

JS:

function predicao(objeto){
    var comprimento = objeto.value.length;
    var antipenultimo = comprimento - 4;
    var input = objeto.value.substring(antipenultimo,comprimento);
    var output = "";
    for(var i=0; i<input.length; ++i){
        if(output != "") output += ", ";
        output += input.charCodeAt(i);
    }
    if (output == "91, 91, 103, 32"){
        var preditor = document.getElementById('example');
        preditor.value = '';
        preditor.style.display = 'block';
        preditor.focus();
        preditor.select();
    }
}
function insert(objeto, evt){
    var e = evt || event;
    var code = e.keyCode || e.which;
    if(code == '32') {
        var texto = document.getElementById('test').value;
        texto += objeto.value+']]';
        $('#test').focus();
        document.getElementById('test').value = texto;
        objeto.style.display = 'none';
    }
}
$(document).ready(function(){
    var data = "Ab Aco Ado Ala Mano Cata Ca Obo Olo Po Poq".split(" ");
$("#example").autocomplete(data);});

ここでは、AlexanderKahounとpimvdbが投稿したものを使用しました。

于 2011-08-13T15:01:05.390 に答える
3

私は次の問題に問題があったことはなく、IE6からIE9、Firefox 3.5-5、Chromeで少なくとも9-13から使用しました。

function captureSpace (evt) {
    var e = evt || event;
    var code = e.keyCode || e.which;
    if (code === 32) {
        // Do your thing...
    }
}

これは論理ORを使用してevt、が偽の値であるかどうかを基本的に言い、次にwindow.event

var e = evt || event;

これは、論理ORを使用して、同じ方法で押されたキーにコードを割り当てます。

var code = e.keyCode || e.which;

これにより、コードが32の整数値と正確に等しい場合、真または偽の値が得られます。

(code === 32)

また、これをキーUPイベントに割り当てることをお勧めします。

于 2011-08-13T15:21:21.043 に答える
0

原則として、それを行う方法は機能するはずです。これをチェックしてください:

<html>
<head>
<script type="text/javascript">
function check(e){
 var keynum
 if(window.event)
 {
  keynum = e.keyCode
 }
 else if(e.which)
 {
  keynum = e.which
 }
 if(keynum=='32')
 {
  alert(keynum);}
  }
</script>
</head>
<form>
<input type="text" onkeypress="check(event)" />
</form>
</body>
</html> 

応答の欠如はコンテキストに依存しているようです。

于 2011-08-13T15:01:26.963 に答える
0

押されたキーのUnicodeを表示するには

         <script type="text/javascript">
                function displayunicode(e){
                                            var unicode=e.keyCode? e.keyCode : e.charCode;
                                            alert(unicode);
                                          }
        </script>
                <form>
                      <input type="text" size="2" maxlength="1" onkeyup="displayunicode(event); this.select()" />
                </form>

どのキーが押されたかを判別する

于 2011-08-13T15:21:44.710 に答える