具有相同类的动态生成文本框的远程验证

时间:2016-05-24 06:38:21

标签: javascript php jquery validation

我的动态生成文本框有问题。 我希望所有文本框都有必需的远程验证。

HTML

<li>
    <label class="label">name 1</label>
    <input type="text" name="name_1" id="name_1" class="req_aap" value="" />
    <label id="aap_error" class="error"></label>
</li>
<li>
    <label class="label">name 2</label>
    <input type="text" name="name_2" id="name_2" class="req_aap" value="" />
    <label id="aap_error" class="error"></label>
</li>
<li>
    <label class="label">name 3</label>
    <input type="text" name="name_3" id="name_3" class="req_aap" value="" />
    <label id="aap_error" class="error"></label>
</li>
<li>
    <label class="label">name 4</label>
    <input type="text" name="name_4" id="name_4" class="req_aap" value="" />
    <label id="aap_error" class="error"></label>
</li>
................can be any number of fields................

JS

$.validator.addClassRules("req_aap", {
    required:true,
    remote:{
        url: "some_ajax.php",
        type: "post",
        data: {
            name: function() {return $(this).val();},
            tblNM:'someTable'
        },
        complete: function(data){
            return data;
        }
    }
});

some_ajax.php

if(isset($_REQUEST['name'])) {
    if(getValFromTbl('name',$_REQUEST['tblNM'],'name="'.addContent($_REQUEST['name']).'"'.$fld)!='')
    {
        $valid = 'false';
    }
    else {
        $valid = 'true'; // Allowed
    }
    echo $valid;
}

getValFromTbl是返回记录已存在与否的函数。 这很好。

我完全按照我的意愿得到了真实和错误但是我的jQuery验证也不断给出错误。 如果我输入 true 值,它总是会出现错误并发出验证错误,那么它也会出错。

2 个答案:

答案 0 :(得分:1)

我在表单中尝试了完全相同的示例,因为我没有getValFromTbl(),我尝试使用true来代替它以及检查名称字符串。工作得很好..看看代码是否有帮助..

html page

<!DOCTYPE html>
<html>
<head>
    <title>trying jquery validation</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
    <script type="text/javascript">
        $(function(){
            $('.frm').validate();
            $.validator.addClassRules("req_aap", {
                required:true,
                remote:{
                    url: "some_ajax.php",
                    type: "post",
                    data: {
                        name: function() {return $(this).val();},
                        tblNM:'someTable'
                    }
                    complete: function(data){
                        return data;
                    }
                }
            });
        });
    </script>
</head>
<body>

<form class="frm">
    <ul>
        <li>
            <label class="label">name 1</label>
            <input type="text" name="name_1" id="name_1" class="req_aap" value="" />
            <label id="aap_error" class="error"></label>
        </li>
        <li>
            <label class="label">name 2</label>
            <input type="text" name="name_2" id="name_2" class="req_aap" value="" />
            <label id="aap_error" class="error"></label>
        </li>
    </ul>
    <input type="submit"></input>
</form>

</body>
</html>

some_ajax.php

<?php
if(isset($_REQUEST['name'])) {
    if($_REQUEST['name'] != '')
    {
        $valid = 'false';
    }
    else {
        $valid = 'true'; // Allowed
    }
    echo $valid;
}

答案 1 :(得分:0)

看看你的some_ajax.php是否可以像你这样重写。

$valid = 'true'; // Set allowed by default
if(isset($_REQUEST['name'])) {
$valFromTbl = getValFromTbl('name',$_REQUEST['tblNM'],'name="'.addContent($_REQUEST['name']).'"'.$fld);  
    if(!empty($valFromTbl)) // found value in table - change validity
    {
    $valid = 'false'; // Not Allowed
    }
    echo $valid;
}
相关问题