使用Jquery也会出现正确值的错误消息

时间:2014-08-21 13:08:14

标签: javascript jquery

我想在我的php表单中使用几个数字文本框,例如 - 入场号,距离,电话号码,这个我写的下面的代码工作正常,但问题是当我在3个文本字段中的任何一个中输入字母,即使其他2个正在显示所有3个文本框的数字错误消息。

如何停止显示正确值文本框的错误?

    <script type="text/javascript">
            var specialKeys = new Array();
            specialKeys.push(8); //Backspace
            specialKeys.push(46); //Backspace
            $(function () {
                $(".numeric").bind("keypress", function (e) {
                    var keyCode = e.which ? e.which : e.keyCode
                    var ret = ((keyCode >= 48 && keyCode <= 57) || specialKeys.indexOf(keyCode) != -1);
                    $(".error").css("display", ret ? "none" : "inline");
                    return ret;
                });
            });
        </script>
<input type="text" name="last_name" id="last_name" size="10" class="mandatory numeric" value="<?php if(isset($_POST['last_name'])){echo $_POST['last_name'];} ?>" />

<input type="text"  id="residental_distance" class="mandatory numeric" name="residental_distance" value="<?php if(isset($_POST['residental_distance'])){echo $_POST['residental_distance'];} ?>" />

<input type="text"  id="present_phone" name="present_phone" class="mandatory numeric" value="<?php if(isset($_POST['present_phone'])){echo $_POST['present_phone'];} ?>"/>

1 个答案:

答案 0 :(得分:0)

您的代码正在选择类'error'的所有元素。要只选择连接到触发事件的文本输入的'error'元素,请更改:

$(".error").css("display", ret ? "none" : "inline");

对此:

$(this).siblings(".error").css("display", ret ? "none" : "inline");

此更改将首先选择当前上下文('numeric'输入字段),并查找具有'error'类的任何兄弟。