押されたキーが「スペースバー」、キーコード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が機能した後で修正しようとします。)