При выборе одного варианта не отправлять текстовое поле - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть форма на моем веб-сайте, в которой я добавил выпадающий список.Я выбираю вариант, если мы нажмем на последний вариант, откроется одно текстовое поле.Если мы выберем другие параметры, это текстовое поле будет скрыто.При отправке почты, если пользователь нажимает на другую опцию (кроме последней), отправляется почта, но она также принимает значение этого пользовательского текстового поля.Это значение следует отправлять только если я нажму на последний вариант.В противном случае это должно скрыться.Как это сделать, пожалуйста, помогите мне.Вот мой код

<form action="inc/contact.php" method="POST" class="theme-form-one form-validation" autocomplete="off">

  <input type="text" placeholder="Name *" name="name">
  <input type="text" placeholder="Phone *" name="phone">
  <input type="email" placeholder="Email *" name="email">

    <select id="contact-services" name="services" onchange='CheckServices(this.value);'>

      <option value=""> Services Interested</option>
      <option value="3D Modeling">3D Modeling</option>
      <option value="3D Rendering">3D Rendering</option>
      <option value="3D Animation">3D Animation</option>
      <option value="Custom">Custom Requirement</option>

    </select>

  <input type="text" name="service" id="service" style='display:none;'/>
  <textarea placeholder="Message" name="message"></textarea>
  <button class="theme-button-four btn3">SEND MESSAGE</button>

</form>

Вот мой javascript

<script type="text/javascript">

function CheckServices(val){

  var element=document.getElementById('service');

  if(val=='Services Interested'||val=='Custom')
  element.style.display='block';
  else  
    element.style.display='none';
  }

</script> 

Вот мой php код для отправки почты

<?php

$to = "abc@mail.com";
$from = $_REQUEST['email'];
$name = $_REQUEST['name'];
$headers = "From: $from";
$subject = "subject";

$fields = array();
$fields{"name"}    = "Name";
$fields{"email"}    = "Email";
$fields{"phone"}    = "Phone";
$fields{"services"} = "Services";
$fields{"service"}    = "Service";
$fields{"message"}   = "Message";

$body = "Message:\n\n"; foreach($fields as $a => $b){   $body .= sprintf("%20s: %s\n",$b,$_REQUEST[$a]); }

$send = mail($to, $subject, $body, $headers);

?>

Ответы [ 3 ]

0 голосов
/ 28 ноября 2018

Что вы хотите сделать, это проверить, есть ли в текстовом поле services определенное значение, содержащее его. Если оно есть, мы можем включить его или не включать.Я также немного очистил ваш код.

Попробуйте:

$to = "abc@mail.com";
$from = $_POST['email'];
$name = $_POST['name'];
$headers = "From: $from";
$subject = "subject";

if(isset($_POST['services']) && $_POST['services'] != 'Custom'){

unset($_POST['service']);

}

$body = "Message:\n\n";

foreach($_POST as $a => $b){
$body .= sprintf("%20s: %s\n", ucfirst($a), $_POST[$a]);
 }

$send = mail($to, $subject, $body, $headers);
0 голосов
/ 28 ноября 2018
<script type="text/javascript">
   function CheckServices(val){
      var element=document.getElementById('service');
      if(val=='Services Interested'||val=='Custom')
          element.style.display='block';
      else  
       element.style.display='none';
       element.value = ''; // reset element value
     }
</script>

  Check element on php code
  if(!empty($_POST['service']) {
     // post data in mmail
  }
0 голосов
/ 28 ноября 2018
$fields = array();
$fields{"name"}    = "Name";
$fields{"email"}    = "Email";
$fields{"phone"}    = "Phone";
$fields{"services"} = "Services";
if(isset($_POST["service"]) && !empty($_POST["service"])) $fields{"service"}    = "Service";
$fields{"message"}   = "Message";

Это может вам помочь.Проблема с вашим кодом в том, что вы отправляете массив, даже если вы service пусто.вот почему он включен в ваше почтовое тело.Итак, вам просто нужно поставить условие if, чтобы убедиться, что значение service не пусто

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...