テキスト ボックスが 3 つあるフォームがあります。どちらから先に入るかに関係なく、それぞれに重要なイベントを設定したいと考えています。以下は私のコードです:
function showQuoteBox() {
var overlay = '<div id="overlay"></div>';
var quoteBox = '<form id="quoteForm" action="#"><h1>Get a quote from <INSTALLERS NAME></h1><fieldset id="user-details"><label for="inName">Name:</label><input type="text" id="inName" name="name" value="" /><label for="email">Email:</label><input type="email" id="inEmail" name="email" value="" /><label for="phone">Phone:</label><input type="text" id="inPhone" name"phone" value="" /><input type="submit" value="Get quote!" name="submit" class="submit" /></fieldset><div id="sent-details"><span id="nameText"><span id="emailText"><span id="phoneText"></span></div></form>'
jQuery(overlay).appendTo('body');
jQuery(quoteBox).appendTo('body');
jQuery(document).ready(function() {
jQuery('#inName').keyup(function(){
jQuery('#nameText').html(jQuery(this).val());
});
jQuery('#inEmail').keyup(function(){
jQuery('#emailText').html(jQuery(this).val());
});
jQuery('#inPhone').keyup(function(){
jQuery('#phoneText').html(jQuery(this).val());
});
});
}
window.onkeyup = function (event) {
if (event.keyCode == 27) {
jQuery('#overlay').remove();
jQuery('#quoteForm').remove();
}
}
上記は、ボタンがクリックされたときに呼び出される関数全体です。3 つの入力がある quoteBox を示しています。各入力ボックスにテキストを入力できますが、最初に入力されたもののスパン領域のみが更新されます。他のテキスト ボックスに値がある場合、他のすべては更新されません。
最初に電子メールを入力することを選択すると、スパンに表示されますが、他のテキスト ボックスに値を入力すると、リッスンしません。