0

我正在创建一个团队注册表单。要求的条件是用户必须已经注册,并且只能选择团队中已注册的成员。

为了检查数据库中的用户存在,我正在使用电子邮件。表单包含由在表单中添加字段的按钮触发的多个电子邮件字段

当用户使用 ajax 调用在相应的电子邮件字段中键入并显示结果时,我需要检查所有用户的存在<span class='form_hint'></span>

表单包含在隐藏的 div 中,由颜色框调用

但它似乎并没有以某种方式工作

这是我的html代码:

更新:现在工作正常

<!DOCTYPE html>
<html dir="ltr" lang="en-US"> <head>
<title>Event Description </title>

<meta charset="UTF-8"/>
<!--Colorbox-->

    <link rel="stylesheet" media="screen" href="colorbox/css/styles.css" >
    <link rel="stylesheet" media="screen" href="colorbox/css/colorbox.css" >

<script src="colorbox/js/jquery.min.js"></script>
<script src="colorbox/js/jquery.colorbox.js"></script>

<script>
        $(document).ready(function(){
            $(".register").colorbox({inline:true,maxHeight:"95%", maxWidth:"90%"} );    
        });
</script>

    <!--Colorbox ends-->

</head>
<body>

<a class="register" href="#register">Event Registeration</a>


<script type="text/javascript">
function usercheck(){
$(document).ready(function(){
$('input[type="email"]').keyup(function() {
var name = $(this).val();
if(name=="")
{
$(".form_hint").html("");
}
else
{
$.ajax({
type: "POST",
url: "user_check.php",
data: { email: name } ,
success: function(html){
$(".form_hint").html(html);
}
});
return false;
}
});
});
}
</script>

<div style='display:none'>
  <div id='register' style='padding:10px; background:#fff;'>
    <center>        
    <form class="contact_form" action="../../register/register.php" method="post" name="contact_form">
    <ul>
        <li>
             <h2>Registration</h2>
             <span class="required_notification">* Denotes Required Field</span>
        </li>

        <li>
            <label for="email">Email:</label>
            <input type="email" name="email" placeholder="mail@example.com" onkeyup="usercheck();" required />
            <span class="form_hint">Proper format "mail@example.com"</span>
        </li>
        <span id="dynamicInput"></span>
        <li><input type="button" value="+" onClick="addInput('dynamicInput');"/></li>
        <li>

         <button class="submit" type="submit">Register</button></h4>
        </li>
    </ul>
</form></center>
  </div>



</div>





<script type="text/javascript">
function addInput(liName){
    //var counter=1;
    var newfield = document.createElement('li');
    newfield.innerHTML = "<label for='email'>Email:</label><input type='email' name='email[]' onkeyup="usercheck();"  placeholder='mail@example.com' /><span class='form_hint'></span>";
          document.getElementById(liName).appendChild(newfield);


}

</script> 

</body>
</html>

用于检查数据库中用户的 PHP 代码:

<?php
include('connect.php');
if(isset($_POST['email']))
{
$name=$_POST['email'];
$query=mysql_query("select * from user_details where email='$name'");
$row=mysql_num_rows($query);
if($row==1)
{
echo "Okay Pal!";
}
else
{
echo "User doesn't exist";
}
}
?>

我不知道错误在哪里,因为我是第一次使用动态字段实现它

我也想知道一个像我上面使用的那样处理多个电子邮件字段的好方法。

4

3 回答 3

1

我不认为你IF-Statement在你的 PHP 代码中被执行。

您正在检查email-parameter,但您的 ajax-data 看起来像 data: "name="+ name

尝试将其更改为data: { email: name },

于 2013-07-08T13:15:36.520 回答
1

首先选择器$('#email[]')是无效的。尝试将一些类添加到电子邮件输入或使用此选择器$('input[type="email"]')将事件处理程序添加到所有电子邮件字段。

接下来是keyup处理程序。您可以使用内部处理程序函数$(this)来尝试再次选择字段。

最后一种考虑使用 JSON 作为数据交换类型。在服务器上返回字符串,如:{registered:true}并在客户端上将其解析为 JSONjQuery.ajax函数设置dataType中的 JSON。

于 2013-07-08T13:16:21.320 回答
0

上面的代码现在功能齐全。早些时候只有第一个字段调用该函数并通过 php.ini 进行检查。为了解决它,我添加了一个

function usercheck(){}

处理用户交互。

在每个按键上,<input type='email'>我添加onkeyup()了触发usercheck()如下的功能:

<input type='email' name='email[]' onKeyUp='usercheck();'>

并且查询的结果显示在<span>每个<input type='email'>字段中

谢谢大家的宝贵回复 :) 你让我很开心!

于 2013-07-08T17:11:36.520 回答