1

複数のフォームを含むページがあります。1 つのフォーム (以下の例を参照) には、ページ上のテーブルに行を追加するための入力があります。テーブル内の各行は、オン/オフで選択 (チェックボックス) できます。もう一方のフォームは、どの行が「オン」であったかを次のページに送信するページを送信します。

したがって、最初の問題は、人々が URL を入力して [戻る] をクリックしてテーブルに追加していたのに、それを追加するのではなく、「他の」フォーム (mainForm) を送信していたことでした。

そこで、以下に jQuery を追加しました。これで問題は解決しました。現在、url フィールドにフォーカスがあり、return をクリックすると、リストに url が追加され、mainForm が送信されません。

ただし、そのフィールドがフォーカスされていない場合、リターンを押しても何も起こりません-フォームを送信することを期待していたとき(デフォルトの動作)...イベントはその1つの入力フィールドにのみ関連付けられているためです。

HTML (大幅に簡略化):

<form name="data>
 <input id="url" class="field" type="text" size="65" name="urlText">
 <input class="hubField" type="button" value="Add Url" name="urlAddButton">
 <table>
    <tr>
       <td><input type="checkbox"></td>
       <td>Description text</td>
       ....and so on...
 </table>
</form>

<form name="mainForm">
 <input type="SUBMIT" value="Load Selected Urls" name="Submit">
</form>

JS/jQuery:

$(document).ready(function() {
    $('#url').bind('keyup',function(e) {
        if (e.which == 13) {
        $('input[name="urlAddButton"]').focus().click();
        e.preventDefault();
        }
    })
});

私はjQueryにかなり慣れていないので、よろしくお願いします。;-) js では、そのフィールドがフォーカスされておらず、リターンが押された場合、メインフォームを送信するということを書くだけです。JQueryでこれを簡単に行うためのトリックはありますか?

4

2 に答える 2

3

私が理解していれば、ユーザーが「url」入力にいないときにEnterキーを押したときにmainFormを送信したいと考えています。彼が入ったら、「urlAddButton」をクリックします。もしそうなら、これは jsFiddle の実際の例です: http://jsfiddle.net/MUUUE/

$(document).ready(function(){
    $(this).bind('keydown',function(e) {//keyDOWN (for the input)
        if(e.which == 13) {//if enter is pressed
            if(e.target.id == "url"){//and we're in the url input
                 $('input[name="urlAddButton"]').focus().click();
                 e.preventDefault();
            }
            else if(e.target.type != "textarea" && e.target.type != "text"){//else, we submit the main form (if we're not in another input or textarea)
                $("#mainForm").submit();//id attr added in the html code
            }
        }
    })
});

しかし、結局のところ、入力していないときにフォームを送信することがそれほど良いことかどうかはわかりません。

于 2012-01-05T00:55:23.833 に答える
0

送信するフォームに id (「mainform」) を指定$('#mainform').submit();してから、 name 属性に基づいてそのフォームをターゲットにできることを認識していますが、マークアップを制御できる場合は、id を使用する方がはるかに高速です。

詳しくはドキュメントをご覧ください。- http://api.jquery.com/submit/および彼らが提供するサンプル

$(document).ready(function() {
    $('#url').bind('keyup',function(e) {
        if (e.which == 13) {
            $('#mainform').submit();
            e.preventDefault();
        }
    })
});
于 2012-01-05T00:54:20.150 に答える