3

私は持っている

HTML:

<form  action="" method="post"  id="contactForm">
    <input id='inputbox' name="inputbox" type="text" />
    <button type="button" id='search'> search </button>
</form>

JavaScript

$(document).ready(function() {
    $("#inputbox").keyup(function(event){
        if(event.keyCode == 13){
            $("#search").click();
        }
    });

    $('#search').click(function(){
         var inputbox= $("#inputbox").val();  
        //stuff
    });
});        

Enterキーを押すと入力ボックスの値は何もありませんが、ボタンをクリックすると同じ入力値で完全に機能します

多分入力ボックスを グローバルにしますか?

4

1 に答える 1

8

問題は、送信ボタンがなくても、入力キーがデフォルトでフォームを送信することです。したがって、次のように、イベント バインディングを に変更してkeypressを使用して、送信をブロックする必要があります。event.preventDefault()

$("#inputbox").keypress(function(event){
    if(event.keyCode == 13){
        event.preventDefault();
        $("#search").click();
    }
});

または、 を使用.submit()して関数をトリガーし、入力タイプを送信に変更して、キーとクリックの個別の処理を回避することもできます。

HTML:

<form action="" method="post" id="contactForm">
    <input id='inputbox' name="inputbox" type="text" />
    <input type="submit" value="Search">
</form>

JavaScript:

$(document).ready(function() {
    $("#contactForm").submit(submitSearch);
}); 

function submitSearch(event) {
     event.preventDefault();

     //do other stuff
     alert($("#inputbox").val());
}
于 2013-03-29T19:25:57.393 に答える