如何使用条件运算符根据密码框ID为变量赋值?
解决多表单共用密码验证函数的ID判断与变量赋值问题
嘿,我来帮你搞定这个需求!首先得纠正你代码里的小语法问题——JavaScript里不能直接写var a if id==1...这种结构,得先声明变量再通过条件赋值。另外要注意,$(this).attr('id')返回的是字符串类型的ID,所以判断的时候最好用严格相等===来避免类型隐式转换的坑。
下面给你几种可行的实现方式:
方式一:嵌套三元条件运算符
如果一定要用三元的话,可以这么写(虽然嵌套多了可读性会下降):
var id = $(this).attr('id'); var a = id === '1' ? 'a' : id === '2' ? 'b' : id === '3' ? 'c' : id === '4' ? 'd' : ''; // 给个默认值避免出现undefined
方式二:对象映射(更推荐,易维护)
当需要匹配的ID和对应值有明确对应关系时,用对象键值对来映射是更优雅的方案,以后要加新的ID规则也只要在对象里加一行就行:
var id = $(this).attr('id'); // 定义ID和对应值的映射表 var idMap = { '1': 'a', '2': 'b', '3': 'c', '4': 'd' }; // 从映射表取值,没有匹配到的话给个默认值 var a = idMap[id] || '';
结合密码验证函数的完整示例
把这个逻辑整合到你的共用验证函数里,比如绑定到密码输入框的blur或者keyup事件:
// 共用的密码验证函数 function validatePassword() { var id = $(this).attr('id'); var idMap = { 'password1': 'a', // 这里可以换成你实际的ID,比如password1、password2等 'password2': 'b', 'password3': 'c', 'password4': 'd' }; var a = idMap[id] || 'default_value'; // 自定义默认值 // 接下来写你的验证逻辑,比如根据a的值做不同的验证规则 console.log(`当前密码字段ID: ${id}, 对应标识: ${a}`); // 示例:不同的验证规则 if (a === 'a') { // 表单1的密码验证规则 console.log('执行表单1的密码验证'); } else if (a === 'b') { // 表单2的密码验证规则 console.log('执行表单2的密码验证'); } // ...其他验证逻辑 } // 给所有密码字段绑定验证事件(假设你的密码字段都有统一的class,比如.password-input) $('.password-input').on('blur keyup', validatePassword);
这样不管你的四个表单里的密码字段ID是什么,只要在idMap里配置好对应关系,就能轻松复用同一个验证函数啦!
内容的提问来源于stack exchange,提问作者ChinwalPrasad
相关产品推荐
相关产品推荐

