2017-03-09 52 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? 
    } 
})