【问题标题】:truncate email field value before @ and assign to another field在@之前截断电子邮件字段值并分配给另一个字段
【发布时间】:2013-06-17 21:57:47
【问题描述】:

希望这是有道理的....基本上我有一个表格,想要输入“电子邮件”字段并截断/修剪“@”符号之前的值并将该值提供给另一个隐藏字段。

编辑/添加:此外,如果可能在同一个函数中,自动生成并附加一个随机数(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 将截断值分配给其他字段的最佳方法。

【问题讨论】:

标签: javascript trim truncate


【解决方案1】:

你可能想要这样的东西

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

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

【讨论】:

  • 哇,速度很快,而且很准!不幸的是,我忘了包括我现在在上面编辑/添加的另一个方面。但是,如果在处理/回答后编辑问题是不可接受的,我将删除它并根据您的解决方案将其标记为已解决。不过希望能加入这个功能。
  • 这很容易做到,只需拥有另一个创建随机数的函数并执行此操作hidden.value = name + randomNumber();。如果您不知道如何生成这样的数字,最好根据当前问题的标题发布一个单独的问题(或者只是搜索所以我相信有很多示例)。
【解决方案2】:

首先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 ;

【讨论】:

  • 一个电子邮件地址不应该有任何空格,所以你可以使用类似的东西:/([^\s@]+)@/ 来获取@之前的所有非空格字符,例如(emailAddress.match(/([^\s@]+)@/) || [])[1] || '';
猜你喜欢
  • 2010-10-29
  • 1970-01-01
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多