2016-05-13 5 views
0

私は多くの同様の質問を見ましたが、おそらく私の機能を呼び出す方法を理解できません。jQueryへのフォーム入力なしのSubmitボタンなしでの入力

私の目標は、ユーザーがフォームフィールドに入力してEnterキーを押して送信することです。

現在、誰かがフォームに値を入力した場合、[Enter]をクリックしても何もしません。実行するには、[在庫の検索]ボタンをクリックする必要があります。

私の検索フォームは簡略化されています...すべてがjquerydataのクラスを持つ多くのフィールドがあります。クラスinventory_search_db_connectは、jquerydataをクラスとしてすべてを収集し、その処理を行うjQuery関数にバインドされています。

<form method="post" action="" name="form3" id="form3"> 
<input type=text name="title" size=25 value="" class="jquerydata"> 
<input type=button class="inventory_search_db_connect" value=" Search Inventory" class="jquerydata"> 
</form> 

ジャバスクリプト/ jQueryの

$(document).ready(function() { 
pageBinds.db_actions(); 
SearchBinds.search_actions(); 
}); 


var pageBinds = { 

db_actions: function() { 
var that = this; 
$('.inventory_functions_db_connect').on(
     'click', function(event){ 


      var query= $(this).closest('.parent').find('.jquerydata').serialize(); 

....does stuff here 
); 
}, 
unbind: function() { 
$('.inventory_functions_db_connect').off(); 
this.db_actions(); 
} 

} 

私は

<form method="post" action="" name="form3" id="form3" onsubmit="return false"> 

を追加しました私もうまくいくかもしれない1は、formタグで

$(document).ready(function() { 

$('#form3').on("submit", function() { 
    this.db_actions(); 
}); 
}); 

た、いくつかのことを試してみました私がここにいるので、これは明らかに悪くなかったk。

他の多くの回避策がありますが、私が望む機能を呼び出す方法を解読できませんでした。任意の洞察力を事前に

おかげで... マイク

+0

使用 '$(文書を)助けを願っています。キーの押下(関数(e){if(e.which = 13){var query = $(this)).closest( '。親')find( '。jquerydata')。serialize(); ... ' – jcubic

答えて

0

感謝。 @Alan Wagnerは正しい方向に私を導いた。

私は、提出するためにクリックされたボタンと同じクラスの隠れた送信ボタンを追加しました。これは関数に束縛されています。

<input type="submit" class="inventory_search_db_connect" style="display: none;"> 

は、その後、私は自動送信に

感謝を停止する

event.preventDefault(); 

を追加された機能で、私はこれが最終的に他の誰か マイク

0

はこの試してみてください。HTMLで

$('input').keypress(function(e) { 
if (e.which = 13) 
{ 
this.db_actions(); 
} 
}); 

それとも

$('input').keydown(function (e) { 
    if (e.keyCode == 13) { 
     this.db_actions(); 
    } 
}); 

それとも

$("input").keypress(function (e) { 
    if (e.which == 13) { 
     e.preventDefault(); 
     $("form").submit(); 
    } 
}); 
+0

ありがとう私は似たようなことを試みました。このコードでは、入力が検出されましたが、エラーが発生しました。 TypeError:this.db_actionsは関数ではありません –

+0

$( "input")キー操作(function(e){ if(e.which == 13){ e.preventDefault(); pageBinds.db_actions(); } }); –

+0

keypressボタンをバインドする必要はありません(異なるプラットフォームでは問題が発生する可能性があります)。onsubmitイベントで十分です –

1

を削除o

$('#form3').on("submit", function(e) { 
    e.preventDefault(); 
    this.db_actions(); 
}); 

Edit:

:JSに続いている

$('#form3').on("submit", function() { 
    this.db_actions(); 
}); 

を実行するために阻止されているのでnsubmit =あなたがでpreventDefault()をcalleingによる自動送信を防ぐために持っている "偽を返します"

this.db_actions(); 

はDOM要素なので動作しません。

$('#form3').on("submit", function() { 
    pageBinds.db_actions(); 
}); 

これが動作するかどうか、私に教えてください。回答用)

関連する問題