【发布时间】:2018-05-26 14:45:22
【问题描述】:
我有两个 Angular 形式的下拉菜单。一个是国家,另一个是国家拨号代码。当用户在第一个下拉列表中选择 USA 时,我想将第二个下拉列表更新为默认为 +1 作为拨号代码。否则,第二个下拉菜单应默认为占位符“选择国家代码”。我已经使用 javascript 成功完成了这项工作,但是 Angular 在提交时仍然认为表单无效。我尝试强制该字段在 javascript 中有效,但它似乎不起作用。有没有办法在 HTML 中使用 javascript 或 ng 命令来做到这一点?我想保持 html 的格式不变(即使用 select 和 options 标签)。
HTML:
<select required
class="form-control vertical-gap-5--bottom color-gray--warm-8"
id="country" name="country" type="text"
ng-model="contactSession.country">
<option data-countryCode="UG" value="256">Uganda</option>
<option data-countryCode="UA" value="380">Ukraine</option>
<option data-countryCode="AE" value="971">United Arab Emirates</option>
<option data-countryCode="GB" value="44">United Kingdom</option>
<option data-countryCode="US" value="1">United States</option>
<option data-countryCode="UY" value="598">Uruguay</option>
<option data-countryCode="UZ" value="998">Uzbekistan</option>
</select>
<select required
class="form-control vertical-gap-5--bottom color-gray--warm-8"
id="countryCode" name="countryCode" type="text"
ng-init="contactSession.countryCode = '1'"
ng-model="contactSession.countryCode">
<option value="" selected="selected">Select Country Code</option>
<option data-countryCode="UA" value="380">Ukraine (+380)</option>
<option data-countryCode="AE" value="971">United Arab Emirates(+971)</option>
<option data-countryCode="GB" value="44">United Kingdom (+44)</option>
<option data-countryCode="US" id="usaSelection" value="1">United States (+1)</option>
<option data-countryCode="UY" value="598">Uruguay (+598)</option>
</select>
JS:
$('select[name=country]').change(function () {
if ($(this).val() == '1') {
document.getElementById("countryCode").value = document.getElementById("usaSelection").value;
} else {
document.getElementById("countryCode").value = "";
}
});
【问题讨论】:
-
参考这个answer
-
我不明白这是如何回答这个问题的。
-
你看演示了吗?
-
演示展示了一个全新的下拉菜单,它使用新值呈现。我想保留相同的下拉列表,只需在第一个下拉列表选择为 USA 时自动选择该下拉列表中的值。当我使用上面显示的 javascript 执行此操作时,表单变得无效。
-
为什么要维护HTML?我想建议的是在
select中使用'ng-options'。你对“Angularjs”了解够了吗?
标签: angularjs forms validation dropdown