0

我觉得我错过了一些小东西,但我似乎无法完成这项工作。我正在验证允许用户更改其电子邮件的表单,除其他外,我想确认他们没有重新输入他们已经拥有的同一电子邮件。

我已经尝试了很多尝试使用 id="originalemail" 提取 p 的值,但我似乎无法以与输入的值相比反映字符串相同的形式得到它。任何帮助将不胜感激。

为简单起见,我将该功能修剪为仅根据输入的新电子邮件是否与当前存在的(原始)电子邮件匹配进行验证:

JS/jQuery:

<script>
function validateEmailChange()
{
    // set comparison
    var originalemail=document.getElementById("originalemail").innerHTML;
    var newemail=document.forms["emailform"]["emailnewemail"].value;

    if (newemail == originalemail)
    {
        $('#emailnewemailoff').html("Same as current email address");
        $('#emailconfirmationoff').html("");
        return false;
    }
</script>

HTML:

// show the user's current email
<p id="originalemail"><?= htmlspecialchars($user[0]["email"]) ?></p>

<form id="emailform" name="emailform" onsubmit="return validateEmailChange()" 
              action="email.php" method="post">

<input id="emailnewemail" name="emailnewemail" placeholder="New Email" type="text"/>
<input type="submit" value="Change Email" class="btn"/>

非常感谢!

4

4 回答 4

1

你可以试试if( $('#originalemail').text() == $('#emailnewemail').val() )

于 2013-01-10T22:58:05.050 回答
1

我创建了 jQuery 来评估用户何时离开电子邮件输入字段 ( $('#emailnewemail').blur(),并且它也比较不区分大小写 ( .toLowerCase()) 的值,因此“my@email.com”被识别为与“my@EMAIL.COM”相同'。

$('#emailnewemail').blur(function() {
    if ($('#originalemail').text().toLowerCase() === $('#emailnewemail').val().toLowerCase()) {
        $('#emailnewemailoff').html("Same as current email address");
        $('#emailconfirmationoff').html("");
        return false;
    } else {
        $('#emailnewemailoff').html("Not the same email address");
    }
});

有关工作示例,请参见http://fiddle.jshell.net/jhfrench/EZp6R/ 。

于 2013-01-10T23:26:19.097 回答
0

您可能想尝试使用 jQuery 提取值。我不确定你为什么决定为这两行回退到原生 JavaScript -

var originalemail=document.getElementById("originalemail").innerHTML;
var newemail=document.forms["emailform"]["emailnewemail"].value;

使用 jQuery,这些行看起来像这样 -

var originalemail = $("#originalemail").text();
var newemail = $("#emailnewemail").val();

这是一个小演示

于 2013-01-10T22:59:23.653 回答
0

我意识到我的问题是我正在包装

行,因此包括前导零。它看起来像下面。解决了这个问题,感谢大家的帮助,对于发布的错误问题我深表歉意(仍然是编码新手,所以像这样的语法仍然让我很着迷)

<p id="originalemail">
    <?= htmlspecialchars($user[0]["email"]) ?></p>
于 2013-01-10T23:40:40.670 回答