1

我写了一个简单的页面来检查是否有人两次输入了正确的电子邮件。我想在页面天气的另一个元素中显示第二个表单块中的电子邮件是否与第一个相同。我正在使用 jquery id 选择器。

<head>
<script type="text/javascript" src="jquery1.8.3-min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">


    function emailCheck(){
        if($("#email").val() != $("#email2").val())
        {
            $("#err").innerText = "emails don't match, sucka";
            $("#test").textContent = "emails don't match, sucka";
            $("#test2").innerHtml = "emails don't match, sucka";
            document.getElementById("getEleTest").innerText = "emails don't match, sucka";
            alert("dont match");
        }
    }
</script>
</head>

<body>
<form action="SignUp" method="POST">
    <table>
        <label for="email">Email</label></br>   
        <input id="email" type ="email" name="email1111"/> </br>
        <label for="email2" > Enter Email Again </label></br> 
        <input id="email2" type="email" name="email21111" onkeyup="emailCheck();"></br>
        <input type="submit" value="Sign Up">
    </table>
</form>

<div id="err"></div>
<div id="test"></div>
<div id="test2"></div>
<div id="getEleTest"></div>
</body>

在所有情况下,我都没有在我是 err、test 和 test2 元素的元素中收到任何文本,但我确实收到了一个警报窗口,并且 getEleTest 元素中有文本。这里可能发生了什么。我在 firebug 控制台中没有收到任何错误,jquery 正在获取 'email' 和 'email2' 元素。我检查了我是否正确链接了 jquery 脚本,以防万一我没有添加 google jquery 源。谢谢

4

4 回答 4

1

把所有 jQuery 的东西放进去$(document).ready(function(){ //your code here });

编辑 2:我的 JS 代码中有错字。您将常规 JS 与 jQuery 混合在一起。

为什么不写这样的东西?

$(document).ready(function(){
    $("#signUpForm").submit(function(evt){
        if($("#email").val() != $("#email2").val()){
            $("#err").html("emails don't match, sucka");
            $("#test").html("emails don't match, sucka");
            $("#test2").html("emails don't match, sucka");
            $("#getEleTest").html("emails don't match, sucka");
            alert("dont match");
            evt.preventDefault();
        };
    });
});​ 

并在表单中添加 id = "signUpForm" 属性?您还需要从 HTML 中删除内联 JS,这样您的输入就没有 onKeyUp 事件。你可以在这里
看到我的例子。

于 2012-11-23T19:12:34.723 回答
1

它应该是:

document.getElementById("id").textContent = "string";

或者

$("#id").text("string");

确保不要将两者结合起来,否则不会得到预期的结果。

于 2012-11-23T19:14:41.853 回答
0

像这样写你的代码我已经在我的机器上测试过了

<script type="text/javascript">
    function emailCheck(){
        if($("#email").val() != $("#email2").val())
        {
            $("#err").html("emails don't match, sucka");
            $("#test").html("emails don't match, sucka");
            $("#test2").html("emails don't match, sucka");

            document.getElementById("getEleTest").innerText = "emails don't match, sucka";
            //alert("dont match");
        }
    }
</script>
于 2012-11-23T19:21:49.563 回答
0

所有答案都部分正确。您必须将代码包装在 $(document).ready 函数中,然后使用 jQuery 事件,而不是内联事件。问题是 onkeyup 在 jQuery 调用中不能正常工作,因为它们是在函数范围内调用的。我认为根本没有调用 emailCheck 函数。删除onkeyup并尝试此操作,然后从那里开始工作:

$(document).ready(function(){
  $('#email2').keyup( function() {
    alert("test");   
  });
});
于 2012-11-23T19:43:46.957 回答