通过ISO代码提交国家/地区 - html表单

时间:2016-06-23 19:16:41

标签: html forms

所以我想提供一个供用户从表单中选择的所有国家/地区的列表。我从这个网站找到了一个非常好的html格式list of countries。该网站通过将完整的国家/地区名称列为html字符串来实现我的任务,但该表单实际上将其ISO代码发送到服务器。这很好,但在阅读提交的值时,有人会如何解决提供完整国家/地区名称的问题?

您认为最好将国家/地区值作为ISO值提交,还是仅提交国家/地区的全名?所有网站似乎都在做早期的选择,但这对我来说似乎很麻烦。有人可以提出一些想法,解释为什么首先使用ISO代码,以及如果使用ISO,如何将它们解码回国家名称?谢谢

1 个答案:

答案 0 :(得分:1)

根据我的评论...这个想法是,当select更改时,它会调用JS函数。在那里,您有一个数组设置,其中的键与select的值匹配,以及您希望它显示的内容。因此,您只需要将该代码传递给数组即可获得该值。

<form>

<select onchange="showName()" id="country">
    <option value="AF">Afghanistan</option>
    <option value="AX">Åland Islands</option>
    <option value="AL">Albania</option>
    <option value="DZ">Algeria</option>
    <option value="AS">American Samoa</option>
    <option value="AD">Andorra</option>
    <option value="AO">Angola</option>
    <option value="AI">Anguilla</option>
    <option value="AQ">Antarctica</option>
    <option value="AG">Antigua and Barbuda</option>
    <option value="AR">Argentina</option>
    <option value="AM">Armenia</option>
    <option value="AW">Aruba</option>
    <option value="AU">Australia</option>
    <option value="AT">Austria</option>
    <option value="AZ">Azerbaijan</option>
    <option value="BS">Bahamas</option>
...
</select>
<div id="selResult">
selected: nothing
</div>
</form>

JS:

var myArray = {"AF": "Afghanistan", "AX": "Åland Islands", "AL": "Albania"};
function showName(){
  selectRes = myArray[document.getElementById("country").value];
  document.getElementById("selResult").innerHTML = selectRes;
}

您必须创建完整列表。但这是如何使其发挥作用的基本思路。

这个here fiddle包含了这一切,另外还有一种方法可以使用参考数组。

对于它的价值,如果你打算经常使用它,你应该考虑在你的数据库中创建一个引用表,而不是在JS中捣乱这样做。