Html Form to Mail使用php

时间:2015-08-07 13:04:18

标签: javascript php jquery html twitter-bootstrap

我使用bootstrap创建了一个表单,在javascript验证之后,我需要将每个框中的值发送到邮件ID。但是每当我点击submut按钮时它会显示php代码

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

+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);

0 个答案:

没有答案