我可以用javascript + html制作国家和城市的动态列表吗?

时间:2015-04-22 01:15:53

标签: javascript html

我有一个动态的城市列表,每个国家都有自己的动态城市列表。

现在我正在使用Javascript检查邮政编码列,我正在尝试创建一个将执行下一次搜索的功能,当我选择Netherlands时,它允许我在邮政编码中使用其他字符,但直到现在我没有看到任何成功。

有人能告诉我我做错了吗?


HTML:

<tr>
<td>
<p class="RegTextLine">Your Postalcode </p>
<input type="text" name="postalcode" id="postalcode" class="columnstyle" placeholder="Enter your postal code" onchange="postcode('postalcode','Country')"/>
</td>
</tr>

使用Javascript:

function postcode(code, holland) {
    var code = document.getElementById(code);
    var holland = document.getElementById(holland);
    var dcount=0;
    var charcount=0;
    var jcount=0;



    if (holland.value == "netherland") {
        for (var i = 0; i <= code.length; i++){
             if (code.value.charAt(i) >= '0' && code.value.charAt(i) <= '9')
            dcount++;
        else if (code.value.charAt(i) >= 'a' && code.value.charAt(i) <= 'z')
            charcount++;
        else if (code.value.charAt(i) >= 'A' && code.value.charAt(i) <= 'Z')
            charcount++;
            else
            jcount++;
     }
     if (jcount!=0)
         alert("This symbol is not allowed");

    else 
        alert("holland is good");
    }
    if (holland.value != "netherland") {
        for (var i = 0; i <= code.length; i++) {
            if (code.value.charAt(i) >= '0' && code.value.charAt(i) <= '9')
                dcount++;
            else
                jcount++;
        }
        if (jcount!=0)
            alert("use only digits");
        else
            alert("regular postalcode is work fine");
    }   
}

1 个答案:

答案 0 :(得分:0)

这是你的代码:

<input type="text" name="postalcode" class="columnstyle" placeholder="Enter your postal code" onchange="postalcode(this.id,'Country')"/>

这是错误的,因为函数邮政编码中的'Country'参数不清楚。这个输入类型是文本,因此获取this.id也是无效的,而这是我推荐的解决方案:
1)选择一个选项让用户选择国家:

<label>choose your country</label>
<select name="country onchange="userCountry(this.value)">
<option value="country_a">a</option>
<option value="country_b">b</option>
</select>


2)为用户创建输入用其国家模式输入邮政编码:
2a)创建功能创建邮政编码模式:

function userCountry(country) {
   switch (country) {
      case a:
      limitLength = 6;
      // you could set up your regex for input validation
      regExp = /\d{3,6}/;
      break;
      case b:
      limitLength = 8;
      break;
      // etc.
   };
   document.getElementById("postalCode").setAttribute("maxlength",limitLength);
};
// here is the input in html for user to input the postal code
<input type="text" name="user_postalcode" id="postalCode" onkeyup="validationCode()"/>
// validation the input, only necessary if you have regexp
function validationCode() {
   var invalidCode = /[^\d]+/g; // wrong pattern you make your own, in this case, all characters beside digital character will be considered invalid.
   if (this.value.match(regExp) == null) { // check if it's wrong
      this.value.replace(invalidCode,""); // replace all invalid code with space, so it will remain only valid code
   };
};

我希望这会有所帮助,我试图理解你的问题,这是我从你的问题中理解的内容。