如何发送不同主题的表单内容

时间:2013-08-23 13:48:02

标签: jquery

我在导航点Kontakt下的http://robert-richter.com上需要帮助我的联系方式。我想发送不同主题的表格。在下拉菜单中选择了依赖选项,我想创建一个单独的主题。我之所以这样做,是因为我想在我的电子邮件帐户中使用过滤器,根据sibject标题保存电子邮件。

示例:

联系表格名称:John Alex选项:Anfragepersönlich//德语私人请求

邮箱中的主题:PersönlicheAnfragevon Alex John 23/08/2013

过滤'PersönlicheAnfragevon'并将其保存在'PersönlicheAnfragen'文件夹中(英文:私人请求)

我是jQuery的新手。这是我到目前为止所得到的:

<form action="#" method="post" title="Kontaktformular" class="ajax">
<div><label for="name">Name</label>
    <input name="name" type="text" title="Name"></div>
<div><label for="email">E-Mail-Adresse</label>
    <input name="email" type="text" title="Email"></div>
<div><label for="auswahl">Präfix</label>
<label class="label">
    <select name="auswahl" class="dropdown">
    <option selected value="Webdesign">Anfrage Webdesign</option>
    <option value="Persoenlich">Anfrage persönlich</option>
    <option value="Andere">Alles andere</option>
    <option value="Spam">Spam</option>
    </select>
    </label></div>
    <div><textarea name="message" title="Nachricht"></textarea></div>
<button value="Send" type="submit" class="button">Absenden</button>
</form>

//php file
<?php
if (isset($_POST['name'], $_POST['email'],$_POST['auswahl'], $_POST['message'])) {
    print_r($_POST);
}

$('form.ajax').on('submit', function() {
var that = $(this),
    url = that.attr('action'),
    type = that.attr('method'),
    data = {};

that.find('[name]').each(function(index, value) {
    var that = $(this),
        name = that.attr('name'),
        value = that.val();

    data[name] = value;
});

$.ajax({
    url: url,
    type: type,
    data: data,
    success: function(response) {
        console.log(response);
    }
});
return false;

});

http://jsfiddle.net/c5C8F/2/

如何添加所选选项而不是select元素?

3 个答案:

答案 0 :(得分:1)

$('form.ajax').on('submit', function() {
    var that = $(this),
        url = that.attr('action'),
        method = that.attr('method'),
        data = {};

    that.find('[name]').each(function(index, value) {
        var that = $(this),
            name = that.attr('name'),
            value = that.val();

        data[name] = value; // need to assign value instead of name
    });
    console.log(data);      
    return false;
});

如果您想将所有选定的值作为参数列表尝试

console.log(that.serialize())

答案 1 :(得分:1)

试试这个:如果你想在实现时这样做,那么像这样更新代码:

$('form.ajax').on('submit', function() {
    var that = $(this),
        url = that.attr('action'),
        type = that.attr('method'),
        data = {};

    that.find('[name]').each(function(index, value) {
        var that = $(this),
            name = that.attr('name'),
            value = that.val();

        var isSelect = that.find("select");
        if(isSelect.length > 0){
            value = isSelect.val();
        }

        data[name] = value;
    });
    console.log(data);
    return false;
});

但问题是,您正在浏览表单中的每个输入并将数据存储在数组中的keyValue对中。如果您只是将代码更新到下面,那么您不必手动执行此操作,因为jQuery适合您:

 $('form.ajax').on('submit', function() {
    var that = $(this),
        url = that.attr('action'),
        type = that.attr('method'),
        data = {};

    data = that.serialize(); //it will return each input in string concatenation

    //Or,

    data = that.serializeArray(); //it will return each input in object array

    console.log(data);
    return false;
});   

您可以选择哪种方法最适合您。

我希望它有所帮助

答案 2 :(得分:0)

要获取所选选项的值,您可以执行以下操作:

// Get the select box.
var $select = $(this).find("select[name='auswahl']");
// Get the selected option.
var $selectedOption = $select.find(":selected");
// Get the value of the selected option.
var selectedOptionValue = $selectedOption.val();