【问题标题】:JavaScript email validation using getElementById method使用 getElementById 方法的 JavaScript 电子邮件验证
【发布时间】:2011-03-25 03:05:49
【问题描述】:

对于电子邮件验证,我有以下两个输入字段:

<input class="inputbox" type="text" name="data[subscriber][email]" id="field_email" size="40" value="'.$this->escape(@$this->subscriber->email).'"/>

<input class="inputbox" type="text" name="data[subscriber][retype_email]" id="field_retype_email" size="40" value="" onblur="confirm_email()" />

输入字段的名称不同( input1_name, input2_name ),我有工作脚本:

<script type = "text/javascript">
function confirm_email() {
email = document.adminForm.input1_name.value;
re_email = document.adminForm.input2_name.value;
if ( email != re_email ) {
alert ("ERROR: El correo electronico no coincide. Escribe tu correo electronico nuevamente")
document.adminForm.input1_name.value = "";
document.adminForm.input2_name.value = "";
document.adminForm.input1_name.focus();
}
else {}
}
</script>

但我需要通过 id 访问元素,因为输入元素需要用括号格式化(这在 javascript 中不起作用)。于是我导出了以下脚本:

<script type="text/javascript">
function confirm_email(){
    var email = document.getElementById('field_email');
    var re_email = document.getElementById('field_retype_email');
    if( email != re_email )
        alert("ERROR: El correo electronico no coincide. Escribe tu correo electronico nuevamente")
        document.getElementById('field_email').value = "";
        document.getElementById('field_retype_email') = "";
        document.getElementById('field_email').focus();
    else {} 
}
</script>

它不起作用

如果我只使用脚本的这一部分,它就可以工作:

<script type="text/javascript">
    function confirm_email(){
        var email = document.getElementById('field_email');
        var re_email = document.getElementById('field_retype_email');
        if( email != re_email )
            alert("ERROR: El correo electronico no coincide. Escribe tu correo electronico nuevamente")
            else {} 
    }
    </script>

这意味着这些行是错误的:

        document.getElementById('field_email').value = "";
        document.getElementById('field_retype_email') = "";
        document.getElementById('field_email').focus();

但是,我希望输入元素重置,并且第一个输入元素成为焦点(获得我使用第一个有效代码的 sn-p 时得到的效果)。

如何使用 getElementById 方法做到这一点?

感谢

【问题讨论】:

  • Related: if( email != re_email ) 正在比较 元素,它总是不同的,你想要if( email.value != re_email.value )

标签: javascript email-validation getelementbyid


【解决方案1】:

你缺少一些大括号,还有一些 .value:

<script type="text/javascript">
function confirm_email(){
    var email = document.getElementById('field_email').value;
    var re_email = document.getElementById('field_retype_email').value;
    if( email != re_email ) {    //  <-- here
        alert("ERROR: El correo electronico no coincide. Escribe tu correo electronico nuevamente")
        document.getElementById('field_email').value = "";
        document.getElementById('field_retype_email').value = "";
        document.getElementById('field_email').focus();
    }    // <-- and here
    else {} 
}
</script>

【讨论】:

    【解决方案2】:

    您的脚本中缺少一些.value 属性。这对你有用吗?

    <script type="text/javascript">
    function confirm_email(){
        var email = document.getElementById('field_email').value;
        var re_email = document.getElementById('field_retype_email').value;
        if( email != re_email ) {
            alert("ERROR: El correo electronico no coincide. Escribe tu correo electronico nuevamente")
            document.getElementById('field_email').value = "";
            document.getElementById('field_retype_email').value = "";
            document.getElementById('field_email').focus();
        }
        else {} 
    }
    </script>
    

    【讨论】:

    • 注意:根据安德鲁的回答,我也添加了一些花括号:)
    猜你喜欢
    • 2022-12-11
    • 2023-04-06
    • 2011-10-20
    • 2011-02-16
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    • 2012-09-15
    • 2013-11-07
    相关资源
    最近更新 更多