0

EDIT **これをもう少し明確にするために....

入力ボタンをマウスでクリックすると、次のように ajax 経由で投稿されます: mysite.com:8888/save/1?val=&val2=&val3=...

テキストフィールドで「Enter」を押すと、ajax 経由ではなく、それ自体に送信されます...通常の送信フォームのように機能します...「Enter」を取得する方法を理解しようとしています。 " ajax経由でも投稿するボタン...

これは、フォームの (部分的な) html です。

<legend>Add Directory Entry</legend>
<div id="statusmessage"></div>
<div class="form-radios clearfix">
    <label class="option" for="edit-type-0"><input id="edit-type-0" name="type" value="0" class="form-radio clearfix" type="radio"> option1</label>

    <label class="option" for="edit-type-1">
    <input id="edit-type-1" name="type" value="1" class="form-radio clearfix" type="radio"> option2 </label>

    <label class="option" for="edit-type-2">
    <input id="edit-type-2" name="type" value="2" class="form-radio clearfix" type="radio"> option3 </label>

    <label class="option" for="edit-type-3">
    <input id="edit-type-3" name="type" value="3" class="form-radio clearfix" type="radio"> option4 </label>
</div>

<label for="edit-name">Name: <span class="form-required" title="This field is required.">*</span></label>
<input maxlength="128" name="name" id="edit-name" size="60" value="" class="form-text required" type="text">

<label for="edit-phone">Phone: </label>
<input maxlength="128" name="phone" id="edit-phone" size="60" value="" class="form-text" type="text">

<input name="op" id="edit-save" value="Save Entry" class="form-submit ahah-processed" type="submit">

送信ボタンを作成するための php は次のとおりです。

$form['addentry']['save'] = array(
        '#type' => 'submit',
        '#value' => t('Save Entry'),
        '#submit' => array(),
        '#ahah' => array(
            'path' => 'family/'.$user->uid.'/savenewentry',
            'wrapper' => 'ahah-example-new-row-wrapper',
            'method' => 'prepend',
            'effect' => 'fade',
            'progress' => array('type' => 'bar', 'message' => t('Please wait...')),
        ),
    );

そのため、ボタンをクリックすると進行状況が表示され、「Enter」を押すとページ全体が送信され、更新されます...


送信ボタンを使用する ajax フォームがあります (input type="submit" である必要があります... "button" は使用できません)。クリックすると、実際には情報を「送信」しないという点で期待どおりに機能しますが、Enter キーを押すと、フォーム全体が送信されます。私はここのフォーラムを調べてきましたが、動作を無効にすることについて話している投稿をたくさん見つけることができますが、ボタンを「クリック」してエンターキーを押すのとまったく同じように動作するようにしたいです...私は他のスレッドのいくつかに投稿されたさまざまな反復を試みましたが(「preventDefault」を含む多く)、入力時に送信し続けます...

/*
There are a lot more fields, but if, for example, you're in the 
zip code text field and hit enter, the form will "submit".  
If you click enter, it posts and responds as expected... 
*/
<input type="text" value="" id="edit-zip" name="zip" />
<input type="submit" value="Save" id="edit-save" name="op">

私はこれを試しました:

  $('form#my-custom-form input#edit-save').keypress(function(e) {
    if(e.which == 13) {
        e.preventDefault();
        $('input#edit-save').click();
    }
 });
4

3 に答える 3

1

一般的に、フォーム要素にフォーカスがあるときにEnterキーを押すと、フォームの送信イベントが発生する可能性があります。

$('form#my-custom-form').submit(...your handler function here...)

したがって、ボタンを処理するのと同じ方法でこのイベントを処理します

于 2011-06-07T19:56:01.410 に答える
0

preventDefault() を送信ボタンイベントにバインドする代わりにclick、フォームのsubmitイベントにバインドします。

$('form').submit(function(e){
e.preventDefault();
});
于 2011-06-07T19:56:42.487 に答える
0

あなたの問題はこれに似ています: event.preventDefault (
) が Mozilla または IE で機能しない

于 2013-01-23T19:09:48.383 に答える