1

マウス イベントとキーボード イベントの両方を処理するコードを作成しました。しかし、onkeypressイベントは Firefox や IE などでは発生keydownしません。イベントも試してみましたが、これは機能しません。li要素の HTML コードは次のとおりです。

print "<li class=\"ui-menu-item \" id=\"toli$i\"  value=\"'$name','$email'\" role=\"menuitem\"><a class=\"ui-corner-all\" href=\"#\"  onkeypress=\"keyhandle('$name','$email');\" onclick=\"fillto('toli$i','$name','$email');\">$ename $ediv $email></a></li>";
    }
    elsif($field eq "cc"){

 print "<li class=\"ui-menu-item \" id=\"toli\" role=\"menuitem\"><a class=\"ui-corner-all\" href=\"#\" onkeypress=\"keyhandle('$name','$email');\" onclick=\"fillcc('$name','$email');\">$ename $ediv $email></a></li>";
}
elsif($field eq "bcc"){

 print "<li class=\"ui-menu-item \" id=\"toli\" role=\"menuitem\"><a class=\"ui-corner-all\" href=\"#\" onkeypress=\"keyhandle('$name','$email');\" onclick=\"fillbcc('$name','$email');\">$ename $ediv $email></a></li>";
}
}
print "</ul>";

ジャバスクリプト関数は

<script language="javascript">
function keyhandle(id,name,email){

alert (id);
 }
</script>

onclickイベントは発生していますが、発生しonkeypressていません。これがなぜなのか誰にも示唆できますか?

ブラウザに与えられるコードは

<div id="displayto" class="display ui-widget"><ul class="ui-autocomplete ui-menu ui-widget-content ui-corner-all " style="width: 550px; max-height: 200px;" aria-activedescendant="ui-active-menuitem" role="listbox"><li class="ui-menu-item " id="toli1" value="'AMAL SMITHA S','amal_smitha@vssc.gov.in'" role="menuitem"><a class="ui-corner-all" href="#" onkeypress="keyhandle('AMAL SMITHA S','amal_smitha@vssc.gov.in');" onclick="fillto('toli1','AMAL SMITHA S','amal_smitha@vssc.gov.in');">"AMAL SMITHA S" (COM) &lt; amal_smitha@vssc.gov.in&gt;</a></li></ul></div>

コードを試してみました

 $(document).ready(){
        $("#displayto").keypress(function(){
            alert('a');
    });
} 

しかし、それも機能していません。それぞれに連続したIDを与えました

  • アイテム。この連続 ID を keypress 関数を介して渡したいと思います。この ID 値は、「下」矢印を押すと次の ID 値を取得し、上矢印を押すと前の値を取得するために使用されます。Enter キーが押されると、fillto() 関数が呼び出されます。このコードはオートコンプリート機能用です。これを行う他の方法はありますか?この問題を解決するのを手伝ってください。

  • 4

    3 に答える 3

    6

    これは少し遅すぎるかもしれませんが、現在、私はこの同じ問題に対処しており、解決策を見つけた可能性があります.

    私の状況は次のとおりです。

    <span onclick="javascript: /* some javascript to select element */ " onkeypress="javascript: /* call function to process key event */">...</span>
    

    要素が重要なイベントをキャッチできるようにするには、 focusableにする必要があることをどこかで見つけました。デフォルトでは、すべての入力要素はフォーカス可能である必要があり、ブラウザによって異なる場合もあります。

    ただし、要素をフォーカス可能にすることができます。私の場合は、これを実現するためにtabindex属性を使用しました。そのようです:

    <span tabindex="" onclick="javascript: /* some javascript to select element */ " onkeypress="javascript: /* call function to process key event */">...</span>
    

    これは Firefox では機能しましたが、Chrome では機能しませんでした。tabindex 属性に何らかの値を入力した場合にのみ、イベントが実際に発生し、onkeypress="" の javascript が実行されました。

    だから今、私はこのようなものになりました:

    <span tabindex="0" onclick="javascript: /* some javascript to select element */ " onkeypress="javascript: /* call function to process key event */">...</span>
    

    編集:実際に要素にフォーカスする必要があることを追加するのを忘れていました。focus() を呼び出して onclick="" でそれを行いました。

    于 2012-11-15T19:59:41.457 に答える
    0

    おそらく、イベントは入力の前にロードされているため、機能していません。ライブで試してください。

    $(document).ready(){
    
            $('input').live('keypress', function (e) {
               if ( e.keyCode == 9 ){
                   alert( 'Tab pressed' );
                }else
                  alert("another key pressed");
            });
    }
    

    入力タグを使用していない場合は、div の id など、使用しているタグで試してください

    于 2012-04-17T14:58:17.553 に答える
    0

    jQueryは使えますか?? 可能であれば、次のようなことを試してみてください。

    $(document).ready(){
        $("#displayto").keypress(function(){
            alert('a');
        });
    }//end of document ready
    
    于 2012-04-16T20:31:27.267 に答える