2015-07-13 2 views
1

У меня есть форму. Форма имеет 1 действие и 1 кнопку отправки. Если я нажму кнопку «Отправить», он выполнит проверку, и если все будет в порядке, он отправит данные на сторонний сайт, а оплата на этом сайте будет произведена, а почта отправлена ​​владельцу сайта, на котором была сделана транзакция. Теперь я хочу добавить еще одну кнопку отправки, которая отправляет только электронную почту. У меня есть форма, как это:Одна форма 2 кнопки отправки 2 действия

<form name="bookingForm" class="cmxform" id="bookingForm" method="post" action="third-party-site.php" accept-charset="utf-8"> 

, а затем у меня есть такие поля, как имя, адрес электронной почты и т.д.

и кнопку отправки:

<input type="submit" value="PROCEED TO BOOKING" name="submit1" id="submitButton" class="btn btn-info pull-right" title="Click here to submit!"/> 

Так что я попытался это:

$('#submitButton2').click(function(){ 
$('form[name=bookingForm]').setAttrib('action','send_mail.php'); 
$('form[name=bookingForm]').submit(); 
}); 

и этот:

$('#submitButton2').click(function(){ 
$('#bookingForm').attr('action', 'send_mail.php'); 
}); 

но ничего не работает. Поэтому, если кто-то может мне помочь, я был бы признателен.

Теперь я добавил скрипт, который проверяет на отправке клика, и я добавил process.php, который отправляет почту. Проверки в порядке, но когда нужно перейти к process.php, она дает ошибку, поскольку она постоянно добавляет имя домена перед пути к process.php. Process.php находится внутри папки темы, и я определил путь к публикации publichtml/pagename.com/wp/content/themes/mytheme/process.php, а в консоли сказано, что страница не найдена http://www.example.com/publichtml/pagename.com/wp/content/themes/mytheme/process.php.


Теперь я сделал звонок ajax, поэтому он отправляет электронную почту на другую кнопку.

$(document).ready(function() { 
$('input[placeholder], textarea[placeholder]').placeholder(); 
$('#submit2').removeAttr('disabled'); 



$('#bookingForm').validate({ 
    debug: true, 
    //submitHandler: ajaxSubmit 
      rules: { 

      }, 
      messages: { 
       first_name: "First name field required.", 
       last_name: "Last name field required.", 
       email: { 
        required: "Email address required", 
        email: "Email address must be in the format [email protected]"       
       } 


      } 

}); 

$('#submit2').click(function() { 
    if($('#bookingForm').valid()) { 
      ajaxSubmit(); 
    } 
    else { 
     $('label.error').hide().fadeIn('slow'); 
    } 
}); 

}); 

function ajaxSubmit() { 

$('#bookingForm').attr('disabled', 'disabled'); 
var firstName = $('#first_name').val(); 
var lastName = $('#last_name').val(); 
var email = $('#email').val(); 


var data = 'firstName=' +firstName+ '&lastName=' +lastName+ '&email=' +email; 

$.ajax({ 
    url: '<?php bloginfo('template_directory'); ?>/process.php', 
    type: 'POST', 
    dataType: 'json', 
    data: data, 
    cache: false, 
    success: function(response) { 
     if(response.error != 'true') { 
      $('#loading, #bookingForm, .message').fadeOut('slow'); 
      $('#response').html('<h3>Message sent successfully! </h3>').fadeIn('slow'); 
     } 
     else { 
       $('#loading').fadeOut('slow'); 
       $('#submit2').attr('disabled', 'disabled'); 
       $('#response').html('<h3>There was a problem sending mail!</h3>').fadeIn('slow'); 
     } 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
          $('#loading').fadeOut('slow'); 
      $('#submit2').removeAttr('disabled'); 
      $('#response').text('Error Thrown: ' +errorThrown+ '<br>jqXHR: ' +jqXHR+ '<br>textStatus: ' +textStatus).show(); 
    } 
}); 
return false; 
} 

и мой process.php:

<?php 

sleep(2); 
define('TO', '[email protected]'); 
define('FROM', $_POST['email']); 
define('SUBJECT', 'inquiry'); 
$isValid = true; 
$return = array("error" => "false"); 
if($_SERVER['REQUEST_METHOD'] == 'POST') { 
global $return; 
if (sendEmail()) { 
    //return "Message sent successfully!"; 
    echo json_encode($return); 
} 
else { 
    echo json_encode($return); 
} 
} 
function sendEmail() { 
    global $return; 
    $body = ""; 
    $body .= "From: ".$_POST['email']."\nSubject: " . 'inquiry'; 
    $body .= "\nFirst Name: ".$_POST['first_name']; 
    $body .= "\nLast Name: " .$_POST['lastName']; 

    if (@mail(TO, 'inquiry', $body)) { 
    //if(true) { 
     $return['error'] = 'false'; 
    } 
    else { 
      $return['error'] = 'true'; 
    } 
    return $return; 
    } 

, но я не могу получить значения? Кто-нибудь знает, где я ошибся?

+0

Получаете ли вы какие-либо ошибки в консоли? - А где ваш «# submitButton2»? Я могу только 1 – Epodax

+0

Предположительно вы добавили ' MaggsWeb

+0

Да, я добавил вторую кнопку с id submitButton2, и я сделал send_mail.php, который должен отправить почту. Он вводится как submitbutton1 – KondukterCRO

ответ

0

Я изменил тип, чтобы получить, и теперь он работает.

$body .= "\nFirst Name: ".$_GET['firstName']; 

Чтобы иметь 2 действия на 1 форме, просто добавьте вторую кнопку и опубликуйте ее на php.

0

При нажатии кнопки «Отправить» 2 форма будет отправлена ​​перед обновлением действия . Таким образом, результатом будет одна и та же страница действия для обеих кнопок. Вы можете использовать preventDefault();, чтобы предотвратить отправку формы при нажатии. Вот рабочий код:

<form action="" method="post" id="bookingForm"> 
    <input type="submit" value="Payment" name="s1" id='s1'> 
    <input type="submit" value="Email" name="s2" id='s2'> 
</form> 
    <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script> 
    <script type="text/javascript"> 
    $(function() { 
     $('#s2').click(function(e){ 
     alert('hi'); 
     e.preventDefault(); 
     $('#bookingForm').attr('action', 'send_mail.php'); 
     $('#bookingForm').submit(); 
    }); 
    }); 
</script> 
+0

Ничего не происходит. Нет ошибок в консоли и ничего не происходит. – KondukterCRO

+0

Вы уверены, что * # submitButton2 '.click * событие срабатывает? Попробуйте предупредить что-то и опубликуйте результат здесь. –

+0

Извините, не заметил, что вы используете одну кнопку отправки и кнопку. Так что это не проблема. Но тогда это должно сработать. Вы используете кнопку для второго варианта. Поэтому просто добавьте * $ ('# bookingForm'). Submit(); * к вашему коду. –