我觉得我错过了一些小事,但我似乎无法做到这一点。我正在验证允许用户更改其电子邮件的表单,并且还要确认他们没有重新输入他们已经拥有的相同电子邮件。
我玩了很多试图用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"/>
非常感谢!
答案 0 :(得分:1)
您可以尝试if( $('#originalemail').text() == $('#emailnewemail').val() )
答案 1 :(得分: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/。
答案 2 :(得分: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();
答案 3 :(得分:0)
我意识到我的问题是我正在包装
行,因此包含了前导零。它看起来像下面。解决这个问题解决了这个问题,感谢所有人的帮助,我为糟糕的问题发帖道歉(对编码仍然很新,所以这样的语法仍然让我感到高兴)
<p id="originalemail">
<?= htmlspecialchars($user[0]["email"]) ?></p>