2012-08-28 55 views
0

嗨,因为标题暗示我试图从select元素获取两个值。如何从单个选择中获取两个值

我已准备好设置的是两个选择元素,其中第一个选择过滤器的选择第二个,有超过16000个项目过滤第二个,我想我可能需要一个更好的方法来整合这个,但无论如何,我需要从显示名称和选择的价值,并创建第二个变量来保存值。

从顶部开始的是过滤值的脚本,如果任何人都可以点我一个很好的AJAX啧啧的方向来处理这件事了,我会greatfull这是我的js

<script type="text/javascript"> 
//<![CDATA[ 
jQuery.fn.filterOn = function(selectFrom, values) { 
    return this.each(function() { 
     var select = this; 
     var options = {}; 
$(select).find('option').each(function() { 
    var $o = $(this), title = $o.attr('title'); 
    if (options.hasOwnProperty(title) === false) { 
     options[title] = []; 
    } 
    options[title].push({ 'text': $o.text(), 'value': $o.val() }); 
}); 
$(select).data('options', options); 
     console.log(selectFrom); 
     $(selectFrom).change(function() { 
    var $select = $(select), 
     options = $select.empty().data('options')[$(this).val()]; 
    // options is now just an array of objects with value and text properties, so: 
    $.each(options, function() { 
     $('<option value="' + this.value + '">' + this.text + '</option>').appendTo($select); 
    }); 
    }); 
    }); 
}; 

$(function() { 
    $('#city').filterOn('#country', { 
     'default': [], 
     'LK':['LK'],'SY':['SY'],'KE':['KE'],'KH':['KH'],'MN':['MN'],'SN':['SN'],'JO':['JO'],'SE':['SE'],'GB':['GB'],'AT':['AT'],'IL':['IL'],'PY':['PY'],'JM':['JM'],'MX':['MX'],'CL':['CL'],'CA':['CA'],'BG':['BG'],'MC':['MC'],'PR':['PR'],'LB':['LB'],'EC':['EC'],'PW':['PW'],'GU':['GU'],'MK':['MK'],'RE':['RE'],'BW':['BW'],'LY':['LY'],'TG':['TG'],'TH':['TH'],'MY':['MY'],'ES':['ES'],'DK':['DK'],'DO':['DO'],'BZ':['BZ'],'NI':['NI'],'VE':['VE'],'LV':['LV'],'AZ':['AZ'],'MD':['MD'],'AE':['AE'],'MT':['MT'],'SZ':['SZ'],'YE':['YE'],'SV':['SV'],'MW':['MW'],'GF':['GF'],'BD':['BD'],'LI':['LI'],'SM':['SM'],'BY':['BY'],'MZ':['MZ'],'IR':['IR'],'PK':['PK'],'RU':['RU'],'MU':['MU'],'TW':['TW'],'PT':['PT'],'NG':['NG'],'GR':['GR'],'CH':['CH'],'KW':['KW'],'LU':['LU'],'CZ':['CZ'],'HR':['HR'],'AR':['AR'],'EG':['EG'],'CR':['CR'],'US':['US'],'LT':['LT'],'KZ':['KZ'],'RS':['RS'],'EE':['EE'],'SG':['SG'],'FM':['FM'],'AL':['AL'],'ML':['ML'],'UG':['UG'],'ZA':['ZA'],'MM':['MM'],'AU':['AU'],'FJ':['FJ'],'IT':['IT'],'AD':['AD'],'NO':['NO'],'BR':['BR'],'UY':['UY'],'GT':['GT'],'PF':['PF'],'SC':['SC'],'BB':['BB'],'ME':['ME'],'LA':['LA'],'CK':['CK'],'KY':['KY'],'GA':['GA'],'SA':['SA'],'VN':['VN'],'PH':['PH'],'KR':['KR'],'JP':['JP'],'VU':['VU'],'NZ':['NZ'],'TN':['TN'],'IE':['IE'],'SI':['SI'],'SR':['SR'],'FI':['FI'],'AW':['AW'],'NP':['NP'],'FO':['FO'],'SD':['SD'],'ID':['ID'],'CN':['CN'],'MV':['MV'],'UZ':['UZ'],'HK':['HK'],'DZ':['DZ'],'DE':['DE'],'OM':['OM'],'FR':['FR'],'SK':['SK'],'PL':['PL'],'BS':['BS'],'GP':['GP'],'CO':['CO'],'BO':['BO'],'UA':['UA'],'AN':['AN'],'TO':['TO'],'GE':['GE'],'ET':['ET'],'BM':['BM'],'CY':['CY'],'GM':['GM'],'MA':['MA'],'HU':['HU'],'HN':['HN'],'PE':['PE'],'RO':['RO'],'AM':['AM'],'NC':['NC'],'ZM':['ZM'],'IN':['IN'],'TZ':['TZ'],'NL':['NL'],'BE':['BE'],'TR':['TR'],'NA':['NA'],'GD':['GD'],'QA':['QA'],'IS':['IS'],'BH':['BH'],'ZW':['ZW'],'GI':['GI'],'CM':['CM'] 
    }); 
}); 

//]]> 
</script> 

然后我有一个构建在PHP从数据库表

<select id="country" name="country"> 
<option value="">---------</option> 
<option value="LK">Sri Lanka</option> 
<option value="SY">Syria</option> 
<option value="KE">Kenya</option> 
<option value="KH">Cambodia</option> 
<option value="MN">Mongolia</option>  
<option value="SN">Senegal</option> 
<option value="PY">Paraguay</option> 
<option value="SE">Sweden</option> 
</select> 

<select id="city" name="city"> 
    <option value="3439389">Asuncion</option> 
    <option value="3439352">Bella Vista</option> 
    <option value="3439101">Ciudad Del Este</option> 
    <option value="3438735">Encarnacion</option> 
</select> 

基本上这是所有通过与整个页面获得两个选择,这是查询的样子:

&country=PY &city=3439101 

什么,我需要做的是创造另一个变量称为citycode,给城市数量到并使用所显示的文字作为城市值,因此它看起来像这样

&country=PY &city=Ciudad Del Este &citycode=3439101 

但我怎么可以创建字段& citycode并将html选项文本指定为城市变量的值?

感谢

回答

1
$('#country option:selected').val(); // returns LK 
$('#country option:selected').text(); // returns Sri Lanka 

$('#city option:selected').val(); // returns 3439389 
$('#city option:selected').text(); // returns Asuncion 

有了这些知识,你can add hidden input to POST/GET request

+0

这仍然不能帮助他实际发布城市名称上的数据。如果他想以正常方式发布表单,他需要使用隐藏字段。如果通过AJAX发布,他可以使用隐藏字段和'serialize'整个表单进行发布或手动构建要使用的查询字符串。 –

+0

@MikeBrant [这根本就没有问题](http://stackoverflow.com/questions/2530635/jquery-add-additional-parameters-on-submit-not-ajax) – Peter

+0

@PeterSyzmkowski是的,这当然很容易这样做,你可能也想用这些信息来更新你的答案。就目前而言,答案只是告诉他如何提取值,而不是如何实际发布它们。 –

0

你最好的选择可能让隐藏提起叫你使用jQuery onchange事件对城市select填充值到city。然后您需要将您的city选择的名称更改为citycode