javascript - 使用 select 自动填充多个表单域
问题描述
我正在尝试根据选择框自动填写表单。基本上,当用户选择一家公司时,我希望表单根据他们的选择自动填充其余字段(下例中的“公司 A”或“公司 B”)。
我不确定我是否在正确的轨道上,或者是否有可能。我确定需要额外的 javascript。任何建议将不胜感激。
COMPANIES.JSON_REP = {
"companies":[
{
"company": "Company A",
"phone": "(555) 555-5555",
"address":{
"addressOne": "84 Rainey St",
"city": "Arlen",
"state": "TX",
"postalCode": "78104",
}
},
{
"company": "Company B",
"phone": "(555) 555-5555",
"address":{
"addressOne": "1640 Riverside Dr",
"city": "Hill Valley",
"state": "CA",
"postalCode": "91905",
}
}
]
};
<form method="POST" action="">
<div class="field">
<label for="company">Company</label>
<select id="company" name="company" required>
<option value="">Company A</option>
<option value="">Company B</option>
</select>
</div>
<div class="field">
<label for="phone">Phone</label>
<input type="text" id="phone" name="phone">
</div>
<div class="field">
<label for="addressOne">Street Address*</label>
<input type="text" id="addressOne" name="addressOne" required>
</div>
<div class="field">
<label for="addressTwo">Apt, suite, etc (optional)</label>
<input type="text" id="addressTwo" name="addressTwo">
</div>
<div class="field">
<label for="city">City*</label>
<input type="text" id="city" name="city" required>
</div>
<div class="field">
<label for="state">State*</label>
<select id="state" name="state" required>
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DC">District of Columbia</option>
<option value="DE">Delaware</option>
<option value="FL">Florida</option>
<option value="GA">Georgia</option>
<option value="HI">Hawaii</option>
<option value="ID">Idaho</option>
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="ME">Maine</option>
<option value="MD">Maryland</option>
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="MT">Montana</option>
<option value="NE">Nebraska</option>
<option value="NV">Nevada</option>
<option value="NH">New Hampshire</option>
<option value="NJ">New Jersey</option>
<option value="NM">New Mexico</option>
<option value="NY">New York</option>
<option value="NC">North Carolina</option>
<option value="ND">North Dakota</option>
<option value="OH">Ohio</option>
<option value="OK">Oklahoma</option>
<option value="OR">Oregon</option>
<option value="PA">Pennsylvania</option>
<option value="RI">Rhode Island</option>
<option value="SC">South Carolina</option>
<option value="SD">South Dakota</option>
<option value="TN">Tennessee</option>
<option value="TX">Texas</option>
<option value="UT">Utah</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="WV">West Virginia</option>
<option value="WI">Wisconsin</option>
<option value="WY">Wyoming</option>
</select>
</div>
<div class="field">
<label for="postalCode">Zipcode*</label>
<input type="text" id="postalCode" name="postalCode" required>
</div>
<div class="field">
<button type="submit">Send</button>
</div>
</form>
解决方案
您可以使用这样的 JS 函数:
function updateFields(addressId) {
document.getElementById('phone').value = COMPANIES.JSON_REP.companies[addressId].phone;
document.getElementById('city').value = COMPANIES.JSON_REP.companies[addressId].address.city;
/* more fields */
}
并将您的更改select#company
如下:
<select id="company" name="company" onchange="updateFields(document.getElementById('company').value)" required>
<option value="0">Company A</option>
<option value="1">Company B</option>
</select>
换句话说,当用户在选择输入中选择不同的选项时,您需要一些函数来改变输入的值。为此,您的选择应onchange
使用参数触发函数document.getElementById('company').value
- 它自己的值。该值表示COMPANIES.JSON_REP.companies
数组键。
推荐阅读
- postsharp - PostSharp:如何装饰返回的 IEnumerable
? - ruby - 在异步作业中使用“睡眠”是否合理?
- c# - 为 Xamarin.Forms 识别此控件?
- python - Django:从表单更新对象
- java - 休眠身份生成器问题
- c++ - 如何传递一个 unique_ptr 来设置我的对象的成员变量?
- nsis - 如何在安装后立即执行应用程序......带参数?
- odoo - 在 __getitem__ 返回 self.models[model_name] KeyError: 'mham_app.mham_app' - - -
- linq - ef6 使用网桥查询多对多
- python - selenium 按钮,同一个类,onclick 搜索有很多 '