这应该是一个非常简单的函数,可以在我的PHP代码中实现
但是,出于某种原因,我无法让它发挥作用。
我正在为我的电子邮件属性创建两个函数:
第一个函数应该验证电子邮件的语法/格式,并确保它是正确的
第二个功能应该比较两个电子邮件字段(第一个字段是电子邮件,第二个字段是"确认电子邮件)。如果用户输入两封不同的电子邮件,他将收到错误。
以下是两个函数(javascript):
function validateEmail() {
var email = document.getElementById("email").value
if (!filter_var(email, FILTER_VALIDATE_EMAIL))
{
alert("You have entered an invalid email address !");
return false;
}
return true;
}
function confirmEmail() {
var email = document.getElementById("email").value
var email2 = document.getElementById("email2").value
if (email != email2) {
alert('The email addresses you entered do not match !');
return false;
}
return true;
}
奇怪的是:第二个功能完美无缺。但是,第一个不是。
对于第二个函数,我在表单中添加了以下属性: onSubmit =" return confirmEmail()"
对于第一个功能,我没有IDEA做什么(((
我尝试将其添加到表单中: onSubmit =" return confirmEmail()&& validateEmail()"
但是,没有运气。
其次,我尝试将第一个函数添加到电子邮件属性本身,格式为:
仍然无法工作。
所以,我决定尝试" onkeyup "
(实际上,这有点傻;因为,这意味着:该功能会在用户开始输入电子邮件字段时触发。这是无稽之谈。该功能应该只能起作用用户输入电子邮件后 ,然后转到表单中的下一个字段)
无论如何,由于JavaScript不起作用,我决定尝试简单的PHP。
我在google上发现了这个:
<?php
$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
?>
并且仍然无法正常工作。我不知道我做错了什么。
(a)我是否错误地调用了Javascript? (b)我在某个地方使用PHP代码我不应该使用它吗?
总而言之,我感到茫然。
更新:
请忽略我在JavaScript函数中编写的PHP废话
这是一个错误。
这是validateEmail的实际JS函数:
function validateEmail() {
var email = document.getElementById("email").value
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]
{2,4})+$/;;
if (email.val() == '' || !filter.test(email.val()))
{
alert('You have entered an invalid email address !!');
email.focus();
return false; }
return true; }
而且,虽然我们在讨论这个话题,但也许我应该进一步阐述。
早些时候,我创建了第三个电子邮件功能...........以确定输入的电子邮件是否已存在于MySQL数据库中。
这是我使用的功能:
<SCRIPT type="text/javascript">
$(document).ready(function() {
var min_chars = 4;
var characters_error = 'You must enter a minimum of 4 characters!';
var checking_email = 'Checking Email Validity....';
$('#email').keyup(function(){
//run the character number check
if($('#email').val().length < 4) {
$('#email_availability_result').html(characters_error); }
else{
$('#email_availability_result').html(checking_email);
check_email();
}
});
});
//function to check email AVAILABILITY in database
function check_email(){
var email = $('#email').val();
var button_check_email=true;
//use ajax to run the check
$.post("check.php", { email: email },
function(email_result){
//if the result is 1
if(email_result == 1){
//show that the email is available
button_check_email=false;
document.getElementById("submit").disabled = false;
$('#email_availability_result').html('that email is available');
}else{
button_check_email=true;
document.getElementById("submit").disabled = true;
$('#email_availability_result').html('Email address [' + email +
'] is already registered in our database.');
}
});
}
</SCRIPT>
这个脚本也很完美。
然而,脚本的第一部分是浪费时间。
无需插入用于计算&#34;字符数量的函数&#34;
(HTML提供&#34; minlength&#34;数据值属性)
所以,我需要做的就是彻底删除那个部分,并以某种方式用更有用的东西替换它............例如:检查电子邮件地址的有效性。
麻烦的是:我试过了,但只搞砸了代码))))
答案 0 :(得分:0)
您在javascript代码中调用filter_var。 Filter_var是一个PHP函数,javascript一无所知。
您可以直接在html5的html中进行电子邮件验证。在输入上,输入type =&#34; email&#34;并添加输入所需。这将强制输入为电子邮件。
<input type="email" required ...
如果你想使用JS,这是一个愚蠢的实现:
function validateEmail() {
var email = document.getElementById("email").value;
if (email.indexOf('@') > email.indexOf('.') > email.length)
{
return true;
}
alert("You have entered an invalid email address !");
return false;
}