【问题标题】:Remote validation for dynamic generated text box with same class同类动态生成文本框的远程验证
【发布时间】:2016-05-24 06:38:20
【问题描述】:

我的动态生成文本框有问题。 我想要对所有文本框进行必需远程验证。

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 值,它总是会出现错误情况并给出验证错误,那么它也会给出错误。

【问题讨论】:

  • 您无法从asynchronous 调用中返回。我怀疑这适用于静态 HTML 吗?参考jqueryvalidation.org/remote-method
  • HTML 不是静态的,它是动态的。我已经提到了那个链接。没有帮助:(
  • 它适用于静态 HTML 吗?
  • 不:|这也不适用于静态。你能找出我做错了什么吗?
  • 你能分享一个小提琴演示吗?

标签: javascript php jquery validation


【解决方案1】:

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

html页面

<!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;
}

【讨论】:

  • 我会检查并尽快回复您。顺便说一句,谢谢。
【解决方案2】:

看看像这样重写你的 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;
}

【讨论】:

  • 不工作 :( 在我的some_ajax.php 中,我也得到了同样的结果,但我找不到验证的任何问题。
  • 你能echo 这个getValFromTbl('name',$_REQUEST['tblNM'],'name="'.addContent($_REQUEST['name']).'"'.$fld) 发帖吗? @AjayMakwana。
猜你喜欢
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 2019-09-19
  • 2015-05-27
  • 2014-12-07
  • 1970-01-01
  • 2014-05-20
  • 1970-01-01
相关资源
最近更新 更多