在@之前截断电子邮件字段值并分配给另一个字段

时间:2013-06-17 21:57:47

标签: javascript trim truncate

希望这是有道理的....基本上我有一个表单,并希望获取“email”字段的输入并截断/修剪“@”符号之前的值,并将该值赋予另一个隐藏字段。< / p>

EDIT / ADDED:另外,如果可能在同一个函数中,自动生成并附加一个随机数(01到99之间就足够了)以确保没有“重复/匹配”隐藏字段“值,这将是很好的。 ..例如,如果电子邮件地址是像info@blahblah.com这样的非语言,如果已经在系统中,“info”可能会被阻止,但info46和info07就可以了。

如果添加到这样的问题是不合适的,我道歉并将其编辑出来,根据原始标准将问题标记为已回答,并打开一个有希望添加到此的新问题。

所以基本上如果有人输入“JohnSmith@hotmail.com”,“JohnSmith26”(作为示例)将被指定为另一个隐藏表格字段的值。

示例:

<label>Email Address:</label><input type="text" id="email" name="email" value=""     size="30" maxlength="80"/>

    <input type="hidden" id="hiddenfield" name="hiddenfield" value="truncated email" />

我看到了这个帖子,但我没有使用coldfusion等,我希望在表单中找到一种简单的方法:how do I trim an email input address so only the data before the @ is inputted into the database?

正在寻找使用javascript / jQuery将截断值分配给其他字段的最佳方法。

2 个答案:

答案 0 :(得分:0)

首先split the email address,然后使用regex to remove white spaces,然后将其分配给隐藏字段。

var email = document.getElementById('email').value.split('@')[0],
    hidden = document.getElementById('hiddenfield'),
    trimmedValue = email.replace(/\s+/g, '');

hidden.value = trimmedValue ;

答案 1 :(得分:0)

你可能想要这样的东西

的Javascript

var email = document.getElementById("email"),
    hidden = document.getElementById("hiddenfield");

function transferTruncated() {
    var target = this,
        name;

    if (target.value.indexOf("@") !== -1) {
        name = target.value.split("@")[0].trim();

        if (name && name.search(/\s/) === -1) {
            hidden.value = name;
        } else {
            hidden.value = "truncated email";
        }
    } else {
        hidden.value = "truncated email";
    }
}

email.addEventListener("change", transferTruncated, false);

jsfiddle

注意:我从输入字段中删除了隐藏类型,以便您可以看到它,并且您可能希望在分配之前检查名称是否进一步有效。