1

I have created a form using bootstrap , after javascript validation , i need the values in each boxes to be sent to a mail id . But its displaying the php code everytime i click the submut button

HTML

 <form data-toggle="validator" role="form" action="request-form.php" method="post">
                            <div class="form-group" id="inputNameFormGroup">
                                <input type="text" class="form-control" id="inputName" placeholder="Your name" required>
                            </div>
                            <div class="form-group" id="inputPhoneFormGroup">

                                <input type="tel" class="form-control" id="inputPhone" placeholder="Your PhoneNumber" required>
                            </div>
                            <div class="form-group" id="inputAddressFormGroup">

                                <textarea class="form-control" id="inputAddress" placeholder="Address" required></textarea>
                            </div>
                            <div class="form-group">
                                <div class="form-inline" id="inputPickupDetailFormGroup">
                                    <select class="form-control" id="inputPickupDate" required>
                                        <option value="" disabled selected>Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</option>
                                        <option>1</option>
                                        <option>2</option>
                                        <option>3</option>
                                        <option>4</option>
                                        <option>5</option>
                                        <option>6</option>
                                        <option>7</option>
                                        <option>8</option>
                                        <option>9</option>
                                        <option>10</option>
                                        <option>11</option>
                                        <option>12</option>
                                        <option>13</option>
                                        <option>14</option>
                                        <option>15</option>
                                        <option>16</option>
                                        <option>17</option>
                                        <option>18</option>
                                        <option>19</option>
                                        <option>20</option>
                                        <option>21</option>
                                        <option>22</option>
                                        <option>23</option>
                                        <option>24</option>
                                        <option>25</option>
                                        <option>26</option>
                                        <option>27</option>
                                        <option>28</option>
                                        <option>29</option>
                                        <option>30</option>
                                        <option>31</option>
                                    </select>

                                    <select class="form-control" id="inputPickupMonth" required >
                                        <option value="" disabled selected >Month&nbsp;&nbsp;</option>
                                        <option>Jan</option>
                                        <option>Feb</option>
                                        <option>Mar</option>
                                        <option>Apr</option>
                                        <option>May</option>
                                        <option>Jun</option>
                                        <option>Jul</option>
                                        <option>Aug</option>
                                        <option>Sept</option>
                                        <option>Oct</option>
                                        <option>Nov</option>
                                        <option>Dec</option>
                                    </select>
                                </div>
                            </div>

                            <div class="form-group">
                                <div class="form-inline" id="inputPickupTimeGroup">
                                    <select class="form-control" id="inputPickupHour" required>
                                        <option value="" disabled selected>Hours&nbsp;&nbsp;&nbsp;</option>
                                        <option>1</option>
                                        <option>2</option>
                                        <option>3</option>
                                        <option>4</option>
                                        <option>5</option>
                                        <option>6</option>
                                        <option>7</option>
                                        <option>8</option>
                                        <option>9</option>
                                        <option>10</option>
                                        <option>11</option>
                                        <option>12</option>
                                    </select>
                                    <select class="form-control" id="inputPickupMinutes" required>
                                        <option value="" disabled selected>Minutes</option>
                                        <option>0</option>
                                        <option>5</option>
                                        <option>10</option>
                                        <option>15</option>
                                        <option>20</option>
                                        <option>25</option>
                                        <option>30</option>
                                        <option>35</option>
                                        <option>40</option>
                                        <option>45</option>
                                        <option>50</option>
                                        <option>55</option>
                                    </select>
                                    <select class="form-control" id="inputAmPm" required>
                                        <option value="" disabled selected>AM/PM&nbsp;</option>
                                        <option>AM</option>
                                        <option>PM</option>
                                    </select>
                                </div>
                            </div>
                            <button type="submit" class="btn btn-primary" id="submitButton">Submit</button>
                        </form>

PHP

<?php
$to="testDestination@test.com";Your Email
$subject="Online Cab Booking";
$date=date("l, F jS, Y");
$time=date("h:i A");
$variable =1;
$name        = $_POST['inputName'];
$phone       = $_POST['inputPhone'];
$address    = $_POST['inputAddress'];
$pickupdate    =$_POST['inputPickupDate'];
$pickupmonth =$_POST['inputPickupMonth'];
$pickupthour =$_POST['inputPickupHour'];
$pickupminutes =$_POST['inputPickupMinutes'];
$inputampm =$_POST['inputAmPM'];
$msg="
    Message sent from website form on date  $date, hour: $time.\n   
    Name: $name\n
    Phone Number: $phone\n
    Address : $address\n
    Pick Up Date: $pickupdate /$pickupmonth \n
    Pick Up Time : $pickuphour : $pickupminutes : $inputampm \n

    ";

    mail($to,$subject,$msg,"From:".$name);
    header('Location: http://www.threeguys.us/rts/index.html');

?>

JAVASCRIPT for validation

+function ($) {
   'use strict';

// VALIDATOR CLASS DEFINITION
// ==========================

var Validator = function (element, options) {
    this.$element = $(element)
    this.options = options

    options.errors = $.extend({}, Validator.DEFAULTS.errors, options.errors)

    for (var custom in options.custom) {
        if (!options.errors[custom])
            throw new Error('Missing default error message for custom validator: ' + custom)
    }

    $.extend(Validator.VALIDATORS, options.custom)

    this.$element.attr('novalidate', true) // disable automatic native validation
    this.toggleSubmit()

    this.$element.on('input.bs.validator change.bs.validator focusout.bs.validator', $.proxy(this.validateInput, this))
    this.$element.on('submit.bs.validator', $.proxy(this.onSubmit, this))

    this.$element.find('[data-match]').each(function () {
        var $this = $(this)
        var target = $this.data('match')

        $(target).on('input.bs.validator', function (e) {
            $this.val() && $this.trigger('input.bs.validator')
        })
    })
}

Validator.INPUT_SELECTOR = ':input:not([type="submit"], button):enabled:visible'

Validator.DEFAULTS = {
    delay: 500,
    html: false,
    disable: true,
    custom: {},
    errors: {
        match: 'Does not match',
        minlength: 'Not long enough'
    },
    feedback: {
        success: 'glyphicon-ok',
        error: 'glyphicon-remove'
    }
}

Validator.VALIDATORS = {
    'native': function ($el) {
        var el = $el[0]
        return el.checkValidity ? el.checkValidity() : true
    },
    'match': function ($el) {
        var target = $el.data('match')
        return !$el.val() || $el.val() === $(target).val()
    },
    'minlength': function ($el) {
        var minlength = $el.data('minlength')
        return !$el.val() || $el.val().length >= minlength
    }
}

Validator.prototype.validateInput = function (e) {
    var $el = $(e.target)
    var prevErrors = $el.data('bs.validator.errors')
    var errors

    if ($el.is('[type="radio"]'))
        $el = this.$element.find('input[name="' + $el.attr('name') + '"]')

    this.$element.trigger(e = $.Event('validate.bs.validator', {relatedTarget: $el[0]}))

    if (e.isDefaultPrevented())
        return

    var self = this

    this.runValidators($el).done(function (errors) {
        $el.data('bs.validator.errors', errors)

        errors.length ? self.showErrors($el) : self.clearErrors($el)

        if (!prevErrors || errors.toString() !== prevErrors.toString()) {
            e = errors.length
                    ? $.Event('invalid.bs.validator', {relatedTarget: $el[0], detail: errors})
                    : $.Event('valid.bs.validator', {relatedTarget: $el[0], detail: prevErrors})

            self.$element.trigger(e)
        }

        self.toggleSubmit()

        self.$element.trigger($.Event('validated.bs.validator', {relatedTarget: $el[0]}))
    })
}


Validator.prototype.runValidators = function ($el) {
    var errors = []
    var deferred = $.Deferred()
    var options = this.options

    $el.data('bs.validator.deferred') && $el.data('bs.validator.deferred').reject()
    $el.data('bs.validator.deferred', deferred)

    function getErrorMessage(key) {
        return $el.data(key + '-error')
                || $el.data('error')
                || key == 'native' && $el[0].validationMessage
                || options.errors[key]
    }

    $.each(Validator.VALIDATORS, $.proxy(function (key, validator) {
        if (($el.data(key) || key == 'native') && !validator.call(this, $el)) {
            var error = getErrorMessage(key)
            !~errors.indexOf(error) && errors.push(error)
        }
    }, this))

    if (!errors.length && $el.val() && $el.data('remote')) {
        this.defer($el, function () {
            var data = {}
            data[$el.attr('name')] = $el.val()
            $.get($el.data('remote'), data)
                    .fail(function (jqXHR, textStatus, error) {
                        errors.push(getErrorMessage('remote') || error)
                    })
                    .always(function () {
                        deferred.resolve(errors)
                    })
        })
    } else
        deferred.resolve(errors)

    return deferred.promise()
}

Validator.prototype.validate = function () {
    var delay = this.options.delay

    this.options.delay = 0
    this.$element.find(Validator.INPUT_SELECTOR).trigger('input.bs.validator')
    this.options.delay = delay

    return this
}

Validator.prototype.showErrors = function ($el) {
    var method = this.options.html ? 'html' : 'text'

    this.defer($el, function () {
        var $group = $el.closest('.form-group')
        var $block = $group.find('.help-block.with-errors')
        var $feedback = $group.find('.form-control-feedback')
        var errors = $el.data('bs.validator.errors')

        if (!errors.length)
            return

        errors = $('<ul/>')
                .addClass('list-unstyled')
                .append($.map(errors, function (error) {
                    return $('<li/>')[method](error)
                }))

        $block.data('bs.validator.originalContent') === undefined && $block.data('bs.validator.originalContent', $block.html())
        $block.empty().append(errors)
        $group.addClass('has-error')

        $feedback.length
                && $feedback.removeClass(this.options.feedback.success)
                && $feedback.addClass(this.options.feedback.error)
                && $group.removeClass('has-success')
    })
}

Validator.prototype.clearErrors = function ($el) {
    var $group = $el.closest('.form-group')
    var $block = $group.find('.help-block.with-errors')
    var $feedback = $group.find('.form-control-feedback')

    $block.html($block.data('bs.validator.originalContent'))
    $group.removeClass('has-error')

    $feedback.length
            && $feedback.removeClass(this.options.feedback.error)
            && $feedback.addClass(this.options.feedback.success)
            && $group.addClass('has-success')
}

Validator.prototype.hasErrors = function () {
    function fieldErrors() {
        return !!($(this).data('bs.validator.errors') || []).length
    }

    return !!this.$element.find(Validator.INPUT_SELECTOR).filter(fieldErrors).length
}

Validator.prototype.isIncomplete = function () {
    function fieldIncomplete() {
        return this.type === 'checkbox' ? !this.checked :
                this.type === 'radio' ? !$('[name="' + this.name + '"]:checked').length :
                $.trim(this.value) === ''
    }

    return !!this.$element.find(Validator.INPUT_SELECTOR).filter('[required]').filter(fieldIncomplete).length
}

Validator.prototype.onSubmit = function (e) {
    this.validate()
    if (this.isIncomplete() || this.hasErrors())
        e.preventDefault()
}

Validator.prototype.toggleSubmit = function () {
    if (!this.options.disable)
        return

    var $btn = $('button[type="submit"], input[type="submit"]')
            .filter('[form="' + this.$element.attr('id') + '"]')
            .add(this.$element.find('input[type="submit"], button[type="submit"]'))

    $btn.toggleClass('disabled', this.isIncomplete() || this.hasErrors())
}

Validator.prototype.defer = function ($el, callback) {
    callback = $.proxy(callback, this)
    if (!this.options.delay)
        return callback()
    window.clearTimeout($el.data('bs.validator.timeout'))
    $el.data('bs.validator.timeout', window.setTimeout(callback, this.options.delay))
}

Validator.prototype.destroy = function () {
    this.$element
            .removeAttr('novalidate')
            .removeData('bs.validator')
            .off('.bs.validator')

    this.$element.find(Validator.INPUT_SELECTOR)
            .off('.bs.validator')
            .removeData(['bs.validator.errors', 'bs.validator.deferred'])
            .each(function () {
                var $this = $(this)
                var timeout = $this.data('bs.validator.timeout')
                window.clearTimeout(timeout) && $this.removeData('bs.validator.timeout')
            })

    this.$element.find('.help-block.with-errors').each(function () {
        var $this = $(this)
        var originalContent = $this.data('bs.validator.originalContent')

        $this
                .removeData('bs.validator.originalContent')
                .html(originalContent)
    })

    this.$element.find('input[type="submit"], button[type="submit"]').removeClass('disabled')

    this.$element.find('.has-error').removeClass('has-error')

    return this
}

// VALIDATOR PLUGIN DEFINITION
// ===========================


function Plugin(option) {
    return this.each(function () {
        var $this = $(this)
        var options = $.extend({}, Validator.DEFAULTS, $this.data(), typeof option == 'object' && option)
        var data = $this.data('bs.validator')

        if (!data && option == 'destroy')
            return
        if (!data)
            $this.data('bs.validator', (data = new Validator(this, options)))
        if (typeof option == 'string')
            data[option]()
    })
}

var old = $.fn.validator

$.fn.validator = Plugin
$.fn.validator.Constructor = Validator


// VALIDATOR NO CONFLICT
// =====================

$.fn.validator.noConflict = function () {
    $.fn.validator = old
    return this
}


// VALIDATOR DATA-API
// ==================

$(window).on('load', function () {
    $('form[data-toggle="validator"]').each(function () {
        var $form = $(this)
        Plugin.call($form, $form.data())

    })
   })

 }(jQuery);
Snappawapa
  • 1,377
  • 2
  • 16
  • 36
BDS
  • 107
  • 1
  • 1
  • 9
  • Is the `Your email` at the end of the `$to = '....' ` intentional? Oh and I'd strongly recommend you to remove the real email and replace it with dummy data. Do you have php installed on the server? – Epodax Aug 07 '15 at 13:06
  • NEVER use javascript for validation. Anything that is client side can be manipulated, the only 'safe' code is the PHP, which is server side. Do your validation there. Also for better mailing: https://github.com/PHPMailer/PHPMailer – Snappawapa Aug 07 '15 at 13:09
  • (more correctly, don't rely on javascript validation) – Snappawapa Aug 07 '15 at 14:14

0 Answers0