2
<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){
$(document).ready(function() {
    $("input[name='search_user_submit']").click(function() {
        var cv = $('#newInput').val();
        var cvtwo = $('input[name="search_option"]:checked').val();
        var data = { "cv" : cv, "cvtwo" : cvtwo }; // sending two variables
        $("#SR").html('<img src="loading.gif"/>').show();
        var url = "user.php";
        $.post(url, data, function(data) {
            $("#SR").html(data).show();
        });

    });
});
});//]]>  
</script>

これはボタンを押すと正常に機能しますが、Enterキーを押すと、すべての変数とその値がアドレスバーに表示されます。

では、この目的でキープレスイベントを追加するにはどうすればよいですか:-

私はキープレスのためにこのコードを試しましたが、まだ機能していません:-

<script type="text/javascript">
$(window).load(function(){
    $(document).ready(function() {
    function Script(e) {
        if (e.keyCode == 13) {
             var cv = $('#newInput').val();
            var cvtwo = $('input[name="search_option"]:checked').val();
            var data = { "cv" : cv, "cvtwo" : cvtwo }; // sending two variables
            $("#SR").html('<img src="loading.gif"/>').show();
            var url = "user.php";
            $.post(url, data, function(data) {
                $("#SR").html(data).show();
            });
        }
    }
    });
});
</script>

また、キーを押すために、オプションボタンをクリックしてテキストボックスを作成しています。JavaScriptでこれを指定しました:-

input.onkeypress = 'return Script(event)';

4

3 に答える 3

2

onsubmitEnterキーを処理するのではなく、フォームを使用してイベントを行う必要があります。

<form id="myform">
    <!-- ... -->
    <input type="submit">
</form>

<script>
document.getElementById("myform").onsubmit = function (ev) {
    ev.preventDefault();
    // ...
}
</script>

エラーチェックは行っていませんが、理解していただければ幸いです。

于 2012-04-18T05:20:52.663 に答える
1

私はあなたがajax呼び出しを実行したいと思っていて、入るときにボタンをトラします

これを試して

<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){
$(document).ready(function() {
    $("input[name='search_user_submit']").keyup(function(event){

    if(event.keyCode == 13)
{


        var cv = $('#newInput').val();
        var cvtwo = $('input[name="search_option"]:checked').val();
        var data = { "cv" : cv, "cvtwo" : cvtwo }; // sending two variables
        $("#SR").html('<img src="loading.gif"/>').show();
        var url = "user.php";
        $.post(url, data, function(data) {
            $("#SR").html(data).show();
}
        });

    });
});
});//]]>  
</script>
于 2012-04-18T05:24:14.190 に答える
0

あなたの質問に答えるには、Enter キーを押すとフォームがブラウザーに送信されると思います。アクションが GET に設定されているフォーム (または何も設定されていない、デフォルトで GET) である必要があります。これにより、ブラウザーが更新され、フォーム変数がクエリ文字列として URL に表示されます。ブラウザーの更新により、スクリプトが実際に実行されなくなります (または、ページのリロード時にスクリプトが実行されるため、スクリプトは表示されません)。

これを行うe.preventDefault()Script()、そのデフォルト アクションが発生しなくなります。

[編集] Gopal は私を打ち負かして、ほとんど同じ答えを出しました。

jQueryがイベントバインディングなどを処理することを追加したいのですが、おそらくより良いフローのために、次のように置き換えることができfunction Script(e)ます

$('input').keypress(function(e) {
    if (e.keyCode == 13) {
        e.preventDefault();
        var cv = $('#newInput').val();
        var cvtwo = $('input[name="search_option"]:checked').val();
        var data = { "cv" : cv, "cvtwo" : cvtwo }; // sending two variables
        $("#SR").html('<img src="loading.gif"/>').show();
        var url = "user.php";
        $.post(url, data, function(data) {
            $("#SR").html(data).show();
        });
    }
});

そして、input.onkeypress = 'return Script(event)';どこにも必要ありません。jQuery には、ほぼすべてのイベントに対して( jQuery の keypress.keypress()を参照) のような関数があり、複数のイベントをバインドするために使用することもできます。詳細については、ドキュメントを参照してください。.bind()

于 2012-04-18T05:22:05.657 に答える