JQuery根据值的部分匹配设置选定的选项

时间:2014-04-12 21:09:12

标签: jquery

我有一个精选的电子邮件地址选项,如下所示:

   <select id="employee-email">
    <option value="employee1@employer.com">Employee Name</option>
    <option value="employee2@employer.com">Employee Name</option>
    <option value="employee3@employer.com">Employee Name</option>
   </select>

我有一个名为email的变量。根据此电子邮件,我想选择相应的员工姓名。如果电子邮件地址完全匹配,则可以使用,例如

 var email = 'employee1@employer.com';
 $("#employee-email option[value='" + email + "']").attr("selected", true);

email可以来自许多不同的域中的任何一个 - 它可以是employee1@employer.comemployee1@employer.deemployee1@employer.co.uk,但它始终对应于同一个员工。所以我想要做的是将字符串拆分为例如employee1并根据此选择选项。遗憾的是,value=选择器不适用于部分匹配。谁能建议怎么做?

2 个答案:

答案 0 :(得分:2)

将电子邮件拆分为@,然后使用shift()获取第一部分,即员工,然后在属性开头使用选择器以获取以与员工匹配的值开头的选项,并将其设置为选中

var email = 'employee1@employer.com';
$("#employee-email option[value^='" + email.split('@').shift() + "']").prop("selected", true);

FIDDLE

答案 1 :(得分:0)

这是一个功能示例,如何使用'@'符号获取电子邮件地址。

它获取电子邮件地址并仅返回字符串,直到'@'。

所以你可以这样做

var email = cutEmail(tempEmail);
// your code

//the function to cut the string
function cutEmail(email){
    str ='';
    for(i=0;i<email.length; i++){
        if(email.charAt(i)== '@'){
             break;
        }
        str+= email.charAt(i);
    }
    return(str);
}