我已经研究了一段时间而放弃了,因为我无法弄清楚,但现在我又回到了它。我的网站上有一个电子邮件简报注册表格,我有一个复选框供人们检查他们是否对我的音乐课感兴趣。我希望表单工作的方式是,如果他们对课程不感兴趣,我将没有任何价值,但如果他们对课程感兴趣,我会“对课程感兴趣 - $ city”。现在我在两种情况下都“对课堂感兴趣 - $ city”。
表单有点复杂,因为我使用的是javascript以及常规的html代码(隐藏div等),所以我觉得我在那里感到困惑。
表格:
<form action="../index_success.php" method="post" id="sendEmail" class="email">
<h3 class="register2">Newsletter Signup:</h3>
<ul class="forms email">
<li class="name">
<label for="yourName">Name: </label>
<input type="text" name="yourName" class="info" id="yourName" value="<?php echo $_POST['yourName']; ?>" /><br />
</li>
<li class="city"><label for="yourCity">City: </label>
<input type="text" name="yourCity" class="info" id="yourCity" value="<?php echo $_POST['yourCity']; ?>" /><br />
</li>
<li class="classes"><label for="classInterest">Interested in classes?: </label>
<input type="checkbox" name="classInterest" class="info" id="classInterest" value="Yes" /><br />
</li>
<li class="email">
<label for="emailFrom">Email: </label>
<input type="text" name="emailFrom" class="info" id="emailFrom" value="<?php echo $_POST['emailFrom']; ?>" />
<?php if(isset($emailFromError)) echo '<span class="error">'.$emailFromError.'</span>';
?>
</li>
<li class="buttons email">
<button type="submit" id="submit">Send</button>
<input type="hidden" name="submitted" id="submitted" value="true" />
</li>
</ul>
</form>
javascript-我的道歉,如果这段代码与问题无关 - 我还是很新的,所以我发现最好包含太多而不是不够! (我正在使用jQuery):
<script type="text/javascript">
$(document).ready(function(){
$('#emailFrom')
.focus(function(){
if ($('#overlay').length) { return; } // don't keep adding overlays if one exists
$('#sendEmail')
.find('.name, .city, .classes').slideDown(300, function(){ $(this).show(); });
$('.outeremailcontainer').css({ position: 'relative', bottom: 0, left: 0, zIndex : 1001 });
$('<div id="overlay"></div>').appendTo('body');
});
$('#overlay').live('click', function(){
$('#sendEmail')
.css({ backgroundColor : 'transparent' })
.find('.name, .city, .classes').slideUp(300);
$('.outeremailcontainer').css({ position : 'static' });
$('#overlay').remove();
});
});
</script>
以下是用于检查表单上的错误并通过电子邮件设置类感兴趣的值classInterestVal
的javascript:
$(document).ready(function(){
$("#submit").click(function(){
$(".error").hide();
var hasError = false;
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
var emailFromVal = $("#emailFrom").val();
if(emailFromVal == '') {
$("#emailFrom").after('<span class="error"><br />You forgot to enter the email address to send from.</span>');
hasError = true;
} else if(!emailReg.test(emailFromVal)) {
$("#emailFrom").after('<span class="error"<br />>Enter a valid email address to send from.</span>');
hasError = true;
}
var yourNameVal = $("#yourName").val();
if(yourNameVal == '') {
$("#yourName").after('<span class="error"><br />You forgot to enter your name.</span>');
hasError = true;
}
var yourCityVal = $("#yourCity").val();
if(yourCityVal == '') {
$("#yourCity").after('<span class="error"><br />You forgot to enter your city.</span>');
hasError = true;
}
var classInterestVal = $("#classInterest").val();
if(hasError == false) {
$(this).hide();
$("#sendEmail li.buttons").append('<img src="/wp-content/themes/default/images/template/loading.gif" alt="Loading" id="loading" />');
$.post("/includes/sendemail.php",
//emailTo: emailToVal,
{ emailFrom: emailFromVal, yourName: yourNameVal, yourCity: yourCityVal, classInterest: classInterestVal },
function(data){
$("#sendEmail").slideUp("normal", function() {
$("#sendEmail").before('<h3 class="register2">Thank you! You\'re on the email list!</h3><p class="emailbox">Click <a href="http://rattletree.com/Songs/Live_EP/Chikende.mp3">HERE</a> for your free song.</p>');
});
}
);
}
return false;
});
});
最后这里是sendEmail.php(这是我为$classInterest
添加条件的地方):
<?php
$mailTo = 'email@address.com'; // This is the hardcoded Recipient Address
$mailSubject = 'Newsletter'; // This is the hardcoded Subject
$mailFrom = $_POST['emailFrom'];
$yourName = $_POST['yourName'];
$yourCity = $_POST['yourCity'];
if (isset($_POST['classInterest']) && $_POST['classInterest'] == 'Yes'){
$classInterest ="Class Interest - " . $yourCity;
}
else {
$classInterest = '';
}
$mailHeader = "From: {$mailFrom}";
$mailBody = "Name = {$yourName} City = {$yourCity} Class interest = {$classInterest}";
mail( $mailTo , $mailSubject , $mailBody , $mailHeader );
?>
答案 0 :(得分:1)
从classInterest获取.val()将始终返回值,无论它是否被选中。你需要做的是$(“#classInterest”)。is(“:checked”)这将返回一个布尔值,告诉你是否选中了复选框。
将来调试此类问题的好方法是在Chrome浏览器中查看具有开发工具(F12)的网络选项卡。这将允许您查看正在传递的信息,以便您可以查看错误发生的位置。
如果您想要该值,请执行:
var classInterest = $("#classInterest");
var classInterestVal = classInterest.is(":checked") ? classInterest.val() : "";
我正在缓存classInterest选择器以提高效率。