私はRSVPフォームで本当に苦労しています。
私は一度提出された簡単なメールを私に送ることを得ようとしているhttp://adrianandemma.com/これまでのこのフォームを持っています。
フォームには「名前」フィールドと「参加 - はい/いいえ」のラジオボタンがあります。
私はいくつかのJSを持っていますので、一度に複数のゲストのためにこれらのフィールドをRSVPにクローンすることができます。
「名前」フィールドは配列の罰金を通過し、電子メールで送信されます。入力のname属性をname = "name []"に設定することができますが、ラジオボタン。
複製されたラジオボタンに同じ名前を付けることはできません。クローン化されたすべてのラジオが同じ名前を持つので、はいいくつかのJSを追加して、クローンラジオの名前を「来る」、来る〔2〕などに修正しようとしている。
フォームを送信するたびに、ラジオボタンの値が空白になるように見えるため、これを正常に動作させることはできません。
ラジオボタンを配列として設定し、$ _POSTと最終的に電子メールスクリプトを経由してそれらを運ぶのに最善の方法をアドバイスできますか?ここで
は私のHTMLフォームです:
<?php
if(@$_REQUEST['submit'] == '1') {
include('assets/forms/rsvp.php');
}
?>
<form action="?" method="post">
<?php if(@$errors) :?>
<p class="errors"><?php echo $errors; ?></p>
<?php endif; ?>
<input type="hidden" name="submit" value="1" />
<div class="form-row">
<div class="field-l">
<p>Name</p>
</div>
<div class="field-r">
<p>Attending?</p>
</div>
</div>
<div class="form-row guest">
<div class="field-l">
<input type="text" name="name[]" id="name" value="<?php echo htmlspecialchars(@$_REQUEST['name']); ?>" tabindex="1" />
</div>
<div class="field-r">
<input type="radio" name="coming" id="coming-yes" class="coming-yes" value="Yes"><label for="coming-yes">Yes</label><input type="radio" name="coming" id="coming-no" class="coming-no" value="No"><label for="coming-no">No</label>
</div>
</div>
<a class="addguest" href="#">Add further guest</a>
<div class="form-row">
<button type="submit" id="rsvp-submit" tabindex="2">Submit RSVP</button>
</div>
</form>
ハーズは私のフォームプロセスコード:
<?php
$name = $_POST['name'];
$coming = $_POST['coming'];
$errors = "";
if([email protected]$_POST['name']) { $errors .= "Please enter your name.<br/>\n"; }
if([email protected]$_POST['coming']) { $errors .= "Please enter yes or no for attending.<br/>\n"; }
if(@$_POST['emailaddress'] != '') { $spam = '1'; }
if (!$errors && @$spam != '1')
{
$to = "[email protected]";
$subject = "Wedding RSVP";
$headers = "From: [email protected]";
$body = "The following RSVP has been sent via the website.\n\n";
for($i=0; $i < count($_POST['name']); $i++) {
$body .= "
Name ".($i+1)." : " . $_POST['name'][$i] . "\n
Coming ".($i+1)." : " . $_POST['coming'][$i] ."\n\n";
}
$body .= "\n\nDate Received: " . date("j F Y, g:i a") . "\n";
mail($to,$subject,$body,$headers);
}
?>
は、ここに私のJSです:
$(document).ready(function() {
$('.addguest').on('click', function(e) {
e.preventDefault();
//
// get the current number of ele and increment it
//
var i = $('.guest').length + 1;
$('.guest').first().clone().find("input").attr('id', function(idx, attrVal) {
return attrVal + i; // change the id
});
$('.guest').first().clone().find("input[type=radio]").attr('id', function(idx, attrVal) {
return attrVal + i; // change the id
}).attr('name', function(idx, attrVal) {
return attrVal+'['+i+']'; // change the name
}).val('').end().find('label').attr('for', function(idx, attrVal) {
return attrVal + i; // change the for
}).end().insertBefore(this);
});
});
は、ここで私がすることによって受信てるものの一例です現在メールには名前が付いていますが、「Coming Yes/No」のラジオの値はすべて空白です:
The following RSVP has been sent via the website.
Name 1 : John Doe
Coming 1 :
Name 2 : Ann Doe
Coming 2 :
Name 3 : Fred Doe
Coming 3 :
Date Received: 19 April 2017, 1:04 am
クローンされた行のフィールドの内容を消去することから始めることをお勧めします。 – RiggsFolly
画像は1,000語を保存し、 '@ 'エラー抑圧記号を使用すると1000個のシンクがシンクします – RiggsFolly
JavaScriptコードに問題があります。 FWIW、私は、あなたの考えがあなたのラジオの名前を '[1]'、 'coming [2]'などと命名する限り正しいことを伝えます。これらの名前を持つ直線HTMLフォームを作成すると、期待通りに値を配列として取得できますが、JSが名前を正しく設定していないため、デバッグにJSの人が足りません。 – alanlittle