Webサイトの訪問者から電子メールを収集するために、次のようなHTMLフォームがあるとします。
<form name="input" action="handle_email.php" method="post">
Email: <input type="text" name="email" />
<input type="submit" value="Newsletter" />
</form>
送信ボタンが押されると、$ _ POST ["email"]を使用してhandle_email.phpのメールフィールドの値を取得できます。しかし、他の場所で入力された電子メールテキストの値を使用したいとします。フォーム処理の「外部」のメール値を取得することは可能ですか?
更新:迅速な返信をありがとうございました。私がやろうとしているのは、メールボックスに二重の義務を課すことです。たとえば、上記のコードで送信ボタンの名前を「Newsletter」に変更しました。そのボタンが押されると、handle_email.phpスクリプトはユーザーをニュースレターにサインアップします。ただし、同じページに「登録」リンクがあり、訪問者を登録フォームにリダイレクトして、必要に応じて他の多くの情報を入力できます。ユーザーがたまたまメールテキストボックスにデータを入力した場合、そのフィールドに事前入力できるように、登録ページに送信します。例えば:
<a href="http://mywebsite.com/register?user_email="[how can I put the email here?]"/>Register</a>
私の元の投稿で十分に明確でないことをおMyびします。
ここに私のjsFiddleを参照してください: http://jsfiddle.net/fuDBL/
電子メールフィールドを変更するたびに、リンクは自動的に更新されます。これには、少量のjQueryが必要です。これで、フォームは必要に応じて機能しますが、リンクは動的に更新されるため、誰かがクリックすると、メールフィールドに入力した内容が含まれます。受信ページで入力を検証する必要があります。
$('input[name="email"]').change(function(){
$('#regLink').attr('href')+$('input[name="email"]').val();
});
同じページの他の場所で入力された電子メールの値を使用する場合、たとえば何らかの検証を行う場合は、JavaScriptを使用できます。最初に、メールテキストボックスに「id」属性を割り当てます。
<input type="text" name="email" id="email"/>
次に、JavaScriptを使用して値を取得します。
var email = document.getElementById('email').value;
そこから、「電子メール」の値に対して追加の処理を行うことができます。
メールを使用する場所に依存します。クライアント側にある場合、PHPスクリプトに送信せずに、JQuery(またはjavascript)がトリックを実行できます。
同じことを説明するフィドルを作成しました- http://jsfiddle.net/qHcpR/
読み込み時およびテキストボックス自体をクリックすると消えるアラートがあります。
送信時にページが更新される場合-はい、ただしクエリ文字列のみを使用: http://www.bloggingdeveloper.com/post/JavaScript-QueryString-ParseGet-QueryString-with-Client-Side-JavaScript.aspx (その後、メソッド「GET」を使用する必要があります)。それ以外の場合は、phpスクリプトからその値を返すことができます。
簡単なjavascriptを使用するだけです。
<form name="input" action="handle_email.php" method="post">
Email: <input type="text" name="email" />
<input type="submit" value="Newsletter" />
</form>
<a href="javascript:var the_mail = document.getElementByName('email').value; window.location = 'http://mywebsite.com/register?user_email=' + the_email;">Register</a>
次のように電子メール入力のタイプを変更することもできます。
はい、jQueryを使用してこれを行うことができます。アイデアは
フォームで非表示の値を使用し、フォームを送信する直前に外部テキストボックスからこの非表示の値に値をコピーします。
<form name="input" action="handle_email.php" method="post">
<input type="hidden" name="email" id="email" />
<input type="submit" value="Submit" />
</form>
<script>
$("form").submit(function() {
var emailFromOtherTextBox = $("#email_textbox").val();
$("#email").val(emailFromOtherTextBox );
return true;
});
</script>
http://api.jquery.com/submit/ も参照してください