Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 限制模糊操作上重复值的步骤_Javascript_Ajax_Yii - Fatal编程技术网

Javascript 限制模糊操作上重复值的步骤

Javascript 限制模糊操作上重复值的步骤,javascript,ajax,yii,Javascript,Ajax,Yii,这是我的应用程序的屏幕截图 我的数据库中有70000多条记录,最终用户有机会重新输入数据库中存储的相同数据,标题是我应用程序中唯一的字段。因此我想限制模糊操作中标题的重复值 例如,我用title这样的输入值测试了值数组 <script> function myFunction() { var names = <?php json_encode($test); ?>; var x=document.getEleme

这是我的应用程序的屏幕截图

我的数据库中有70000多条记录,最终用户有机会重新输入数据库中存储的相同数据,标题是我应用程序中唯一的字段。因此我想限制模糊操作中标题的重复值

例如,我用title这样的输入值测试了值数组

     <script>
     function myFunction()
     {  
      var names = <?php json_encode($test); ?>;
      var x=document.getElementById("title").value;  
      for (i=0; i < names.length; i++)
      { 
      if (x == names[i])
      { 
       alert("Duplicates Found");
      }    
      }     
      }
    </script>

    $test = array("title1","title2");

函数myFunction()
{  
变量名称=;
var x=document.getElementById(“title”).value;
对于(i=0;i

但我无法将其与db值进行比较,任何帮助都将不胜感激。提前感谢。

@MESSIAH我相信这家伙正在使用yii。mysql?真正地它已经被弃用了

SELECT 1 FROM table WHERE field=$parameter
这是唯一的检查查询的外观。 请不要使用这个难看的代码

例如,这是表单初始化的外观:

<?php $form = $this->beginWidget('CActiveForm', array(
            'id' => 'feeds-form',
            'enableClientValidation' => true,
            'enableAjaxValidation' => true,

            'clientOptions' => array(
                'validateOnSubmit' => true,))); ?>
在您的案例中,执行ajax验证功能非常重要。您可以将其添加到某个新函数中,也可以在操作开始时添加。 要执行保存,请使用类似以下内容:

if(Yii::app()->request->isAjaxRequest)
        {
            $error=CActiveForm::validate($model);
            if($error!='[]'){
                echo $error;
                Yii::app()->end();
                $flag=false;
            }
        }
if(isset($_POST['Feeds'])&& ($_POST['ajax']!='feeds-form'))
//$model->save() or do whatever you want here 
如果需要完全控制错误等,请使用ajaxSubmitButton:

 <?php echo CHtml::ajaxSubmitButton($model->isNewRecord ? 'Create' : 'Save', Yii::app()->request->url, array(
                'dataType' => 'json',
                'type' => 'post',
                'success' =>
                'js:function (data) {

                 if(!$.isEmptyObject(data)) {
                      $.each(data, function(key, val) {//adding errors to error div wrapper here
                                $("#feeds-form #"+key+"_em_").text(val+" ");
                                $("#feeds-form #"+key+"_em_").parent(".error_wrapter").addClass("error");
                                $("#feeds-form #"+key+"_em_").css(\'display\',\'block\');
                                      });
                  };
                 if(data.status=="success"){
                                           hideAllMessages();
                                          setTimeout(function(){
                                            $(\'.\'+\'success_not\').fadeOut(700);
                                          },6000);
                                            $(\'.\'+\'success_not\').fadeIn({top:"0", left:"0"}, 700);
                                        }
                else {
                      hideAllMessages();
                       setTimeout(function(){$(\'.\'+\'fail\').fadeOut(700);},6000);
                    $(\'.\'+\'fail\').fadeIn({top:"0", left:"0"}, 700);
                  };
                  }',
            ), array(
                'id' => 'feeds-form_submit_' . rand(1, 255), // Need a unique id or they start to conflict with more than one load.
            ));?>
现在它完成了

如果你不明白一些事情,这里有一个提示。

如果我关闭JS怎么办?我建议在服务器端也这样做。另一点是,如果有70000条记录需要检查,那么
for
循环将非常低效。启用客户端验证和ajax验证。将唯一规则添加到属性。完成了。我对数据库设置了一个约束,其中标题字段是唯一的。然后,如果有错误,您就可以启动insert并捕获。您还可以使用查询语句选择该平铺的所有标题,如果查询返回一行,则该行已存在。@FDL Ya使用For循环将效率低下,这是因为您正在寻求帮助。@ineersa Iam不擅长ajax,如果你能给我一个例子或提示..是的,当然你是对的,我正在使用yii和mysql..当我按下提交按钮时,它会显示警告,对吗?但我想在输入标题字段后立即显示。因为如果这个标题已经存储在数据库中,那么输入其他字段是浪费时间的。我想减少时间..不。它将在字段散焦(onchange)后显示。请阅读手册,然后做,然后问。我不知道我哪里出了问题,我无法将值保存在db中,也无法得到验证…让我试试我的最佳做法这是我的GITS。也许会有帮助。视图-。控制器-谢谢你的帮助我不知道为什么它不工作,但我发现了一个简单的方法来实现解决方案,它被附加到你的代码,我希望它可以帮助一些人,它为我工作。再次感谢你。。。
public function rules()
    {
        return array(
            array('title', 'unique'),
              ..............
        );
    }