2017-03-09 56 views
-1

我试图添加功能以在用户从选择列表中选择包含值而不使用提交时提交的表单按钮。这里是链接:http://juiceme.no/phpmail/我试图在输入选择框中选择是或否选项后尝试发送邮件

<?php 
//if "email" variable is filled out, send email 
    if (isset($_REQUEST['email'])) { 

    //Email information 
    $admin_email = "[email protected]"; 
    $email = $_REQUEST['email']; 
    $subject = $_REQUEST['subject']; 
    $select = $_REQUEST['select']; 

    //send email 
    mail($admin_email, "$subject", $select, "From:" . $email); 

    //Email response 
    echo "Thank you for contacting us!"; 
    } 

    //if "email" variable is not filled out, display the form 
    else { 
?> 

<form method="post"> 
    Email: <input name="email" type="text" /><br /> 
    Subject: <input name="subject" type="text" /><br /> 
    Message:<br /> 
    <!--<textarea name="comment" rows="15" cols="40"></textarea><!--> 
    <select id="select" name="select"> 
    <option value="yes">More View</option> 
    <option value="yes">Yes</option> 
    <option value="NO">No</option> 
</select> 
    <br /> 
    <input type="submit" value="Submit" /> 
    </form> 

<?php 
    } 
?> 

的问题是,我不能够当用户选择在选择框中包含选择提交表单。

+0

使用条件语句和检查,如果它等于什么 –

+0

顺便说一句,你标记为javascript和angularjs和jQuery没有代码支持题。 –

+0

好,感谢的建议,我不需要提交按钮,条件语句是当值选择@@谢谢,我很高兴与你的建议 –

回答

1

您可以将该内联JS添加到您的select下拉,

onchange="if(this.value==='yes')this.form.submit()" 

,如:

<form method="post"> 

    Email: <input name="email" type="text" /><br /> 
    Subject: <input name="subject" type="text" /><br /> 
    Message:<br /> 

    <select id="select" name="select" onchange="if(this.value==='yes')this.form.submit()"> 
    <option value="yes">More View</option> 
    <option value="yes">Yes</option> 
    <option value="NO">No</option> 
    </select> 

</form> 

jsBin demo

+0

Omg @@辉煌@谢谢,让我检查 –

+0

这真是太棒了@ Roko C.你真棒。 –

-2

Sendgrid有一个非常有用的github仓库来使用PHP。

https://github.com/sendgrid/sendgrid-php

你将不得不经历的例子来获取代码,但它是一个很好的开始!我希望这有帮助。

下面是一些代码,我发现..对答案扩大。

网址:https://www.formget.com/sendgrid-php-api/ CODE

<?php 

// require the autoloader 
require 'vendor/autoload.php'; 

if (isset($_POST['dsubmit'])) { 
$senderid = $_POST["dsender"]; 
$receiverid = $_POST["dreceiver"]; 
$subject = $_POST["dsubject"]; 
$message = $_POST["dmessage"]; 

//Set SendGrid Credentials 

$sg_username = "Enter Your SendGrid User Name"; 
$sg_password = "Enter Your SendGrid Password"; 

// Initialize the SendGrid object with your SendGrid credentials 

$sendgrid = new SendGrid($sg_username, $sg_password); 

//Create a new SendGrid Email object 

$mail = new SendGrid\Email(); 

// You Can Use Multiple Recipients Here. For This Tutorial We Have Used One. 

$emails = array(
$receiverid 
); 
foreach ($emails as $recipient) { 
$mail->addTo($recipient); 
} 

//Optional Fields. 
$categories = array(
"SendGrid Category" 
); 
foreach ($categories as $category) { 
$mail->addCategory($category); 
} 
$unique_args = array(
"Name" => "Enter Name Of Your Wish" 
); 
foreach ($unique_args as $key => $value) { 
$mail->addUniqueArgument($key, $value); 
} 
try { 

// Add your message details using SendGrid Email object. Here The Values Are Taken By HTML Form Filled By The User. 
$mail-> 
setFrom($senderid)-> 
setSubject($subject)-> 
setText($message); 

//Send Mail. 
if ($sendgrid->send($mail)) { 
echo "<script type='text/javascript'>alert('Sent mail successfully.')</script>"; 
} 
} catch (Exception $e) { 
echo "Unable to send mail: ", $e->getMessage(); 
} 
} 
?> 
<html> 
<head> 
<meta charset="UTF-8"> 
<meta name="viewport" content="width=device-width, initial-scale=1.0"> 
<link href="css/bootstrap.css" rel="stylesheet" type="text/css"/> 
<link href="style.css" rel="stylesheet" type="text/css"> 
<script type="text/javascript"> 
function validate() 
{ 

if (document.myForm.dreceiver.value == "") 
{ 
alert("Please enter your Email!"); 
document.myForm.dreceiver.focus(); 
return false; 
} 
else 
{ 

/*validating email with strong regular expression(regex)*/ 
var str1 = document.myForm.dreceiver.value; 
var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([com net org]{3}(?:\.[a-z]{6})?)$/i 
if (!filter.test(str1)) 
{ 

alert("Please enter a valid email address!") 
document.myForm.dreceiver.focus(); 
return false; 
} 
if (document.myForm.dsubject.value == "") 
{ 
alert("Please enter a subject!"); 
document.myForm.dsubject.focus(); 
return false; 
} 
if (document.myForm.dmessage.value == "") 
{ 
alert("Please enter message!"); 
document.myForm.dmessage.focus(); 
return false; 
} 
if (document.myForm.dsender.value == "") 
{ 
alert("Please enter your Email!"); 
document.myForm.dsender.focus(); 
return false; 
} 
return(true); 
} 
} 
</script> 
</head> 
<body> 
<div class="container"> 
<div class="row"> 

</div> 
<div class="row"> 
<div class="col-md-12"> 
<div id="main"> 
<h1><b>-Send Email Via SendGrid API Using PHP</b></h1> 
</div> 
</div> 
<div class="col-md-12"> 
<div id="content"> 
<div id="login"> 
<h2>Message Box</h2><hr/> 

<form name="myForm" action="" method="post" onsubmit="return validate();" > 

<label><h3>From:</h3></label><br/> 
<input type="email" placeholder="From: Email Id.." name="dsender" id="dsender" width="180"><br /> 

<label><h3>To:</h3></label> 
<input type="email" placeholder="To: Email Id.." name="dreceiver" id="dreceiver" ><br/> 

<label><h3>Subject:</h3></label> 
<input type="text" placeholder="Enter Your Subject.." name="dsubject" id="dsubject" ><br/> 

<label><h3>Message:</h3></label> 
<textarea rows="4" cols="50" placeholder="Enter Your Message..." name="dmessage" id="textarea"></textarea><br/><br/> 

<input type="submit" value="Send " name="dsubmit"/><br /> 

<span></span> 
</form> 
</div> 
<p id="note"> <b>Note : </b> In demo, we have disabled the functionality of sending Emails.</p> 
</div> 
</div> 
</div> 
</div> 
</body> 
</html> 
+0

这是一条评论或非特异性回答一个具体的问题? –

+0

济猪德索莱MAIS这不是预期的答案格式,我见惯了。不要采取这个个人,而是感到欢迎[编辑]和改进。 –

+0

我已编辑帖子以反映一些真实的代码。 – Programmer

0

我想补充一个onchange处理程序(和删除提交输入)。如果他们选择了“是”,则可以向服务器提交可以生成电子邮件的邮件,并返回空表单。如果他们击中“否”,则不必做任何事情(或者可以清除输入,以便他们可以再次尝试,也许)。

你可以得到你的选择的价值是这样的:

$('#select').on('change', function() { 
    if (this.value === 'Yes') { 
    // submit to server so we generate an email 
    } else { 
    // do nothing or clear inputs? 
    } 
})