select,触发js同时取得option的value 和显示的名称

<option value="${u.szj}" onclick="document.getElementById('transit_Distance').value=${{u.transit_Distance}">${u.szj_Name}</option>


---------------------------------------------
<html:select property="szj" style=""
onchange="document.getElementById('transit_Distance').value=document.getElementById('sss_'+this.value).value">
<html:option value="" > 未选择 </html:option>
<c:forEach items="${requestScope.szj_list}" var="u">
<c:choose>
<c:when test="${u.szj ge -1}">
<html:option value="${u.szj}"> ${u.szj_Name} </html:option>
</c:when>
<c:otherwise>
<html:option value="${u.szj}"> ${u.szj_Name} </html:option>
</c:otherwise>
</c:choose>
</c:forEach>
</html:select>

<c:forEach items="${requestScope.szj_list}" var="u">
<input id="sss_${u.szj}" value="${u.transit_Distance}" type="hidden"/>
</c:forEach>
</div></td>
### 确保 Select Select.Optionvalue 类型一致以避免选项匹配失败 在使用 Ant Design 的 `Select` 组件时,确保 `Select` `Select.Option` 的 `value` 类型一致是避免选项匹配失败的关键。如果类型不一致,例如 `Select` 的 `value` 是字符串而 `Select.Option` 的 `value` 是数字,则选中项可能无法正确显示,甚至无法触发预期的更新行为 [^2]。 #### 1. 显式统一 value 类型 在数据准备阶段,应确保 `Select` 的 `value` `Select.Option` 的 `value` 类型一致。例如,如果 `Select.Option` 的 `value` 是数字,则 `Select` 的 `value` 也应为数字,而不是字符串或其他类型。以下示例展示了如何统一类型: ```jsx <Select value={selectedAccountId} onChange={(value) => setSelectedAccountId(value)} > {options.map(option => ( <Select.Option key={option.id} value={option.id}> {option.name} </Select.Option> ))} </Select> ``` 在上述代码中,`option.id` 被明确设置为数字类型,同时 `selectedAccountId` 也应为数字,以确保匹配成功 。 #### 2. 使用类型转换确保一致性 如果数据源的 `value` 类型无法直接统一,可以在绑定前进行类型转换。例如,将字符串转换为数字或数字转换为字符串,以确保两者类型一致: ```jsx // 将字符串转换为数字 const numericValue = parseInt(selectedAccountId, 10); // 将数字转换为字符串 const stringValue = selectedAccountId.toString(); ``` 将转换后的值用于 `Select` 的 `value` 属性,以确保与 `Select.Option` 的 `value` 类型一致: ```jsx <Select value={numericValue} onChange={(value) => setSelectedAccountId(parseInt(value, 10))} > {options.map(option => ( <Select.Option key={option.id} value={parseInt(option.id, 10)}> {option.name} </Select.Option> ))} </Select> ``` #### 3. 初始值设置时的类型匹配 在设置 `Select` 的初始值时,应确保其类型与 `Select.Option` 的 `value` 一致。例如,在 React 中使用 `useEffect` 设置初始值时,应进行类型检查转换: ```jsx useEffect(() => { const initialValue = options.find(option => option.id === initialAccountId)?.id; if (initialValue) { setSelectedAccountId(initialValue); } }, [initialAccountId, options]); ``` 如果 `initialAccountId` 是字符串类型而 `option.id` 是数字类型,应进行转换后再赋值: ```jsx const numericInitialValue = parseInt(initialAccountId, 10); const initialValue = options.find(option => option.id === numericInitialValue)?.id; ``` #### 4. 表单控件中的类型一致性 在表单中使用 `Form.Item` 包裹 `Select` 时,应确保 `Form.Item` 的 `name` 字段与 `Select` 的 `value` 类型一致。例如,在使用 `form.setFieldsValue` 设置初始值时,应确保字段值与 `Select.Option` 的 `value` 类型一致: ```jsx form.setFieldsValue({ accountId: parseInt(initialAccountId, 10) }); ``` 同时,`Select` 的 `value` 也应保持为数字类型以确保匹配: ```jsx <Select value={form.getFieldValue('accountId')} onChange={(value) => form.setFieldsValue({ accountId: parseInt(value, 10) })} > {options.map(option => ( <Select.Option key={option.id} value={option.id}> {option.name} </Select.Option> ))} </Select> ``` #### 5. 处理复杂对象作为 value 的情况 如果 `Select.Option` 的 `value` 是对象类型,应使用 `valueKey` 或 `fieldNames` 来确保正确匹配。例如,在 Ant Design 中可以使用 `fieldNames` 指定对象中的唯一标识字段: ```jsx <Select fieldNames={{ value: 'id', label: 'name' }} value={selectedAccount} onChange={(value) => setSelectedAccount(value)} > {options.map(option => ( <Select.Option key={option.id} value={option}> {option.name} </Select.Option> ))} </Select> ``` 在上述代码中,`fieldNames` 指定了 `value` `label` 对应的字段,确保对象匹配正确 [^3]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值