我在导航点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;
});
如何添加所选选项而不是select元素?
答案 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();