проверка jquery в представлении codeigniter не работает

#jquery #codeigniter #validation

#jquery #codeigniter #проверка

Вопрос:

Я пытаюсь выполнить проверку jquery в представлении codeigniter.

когда я использую «обычную форму» в форме, которую я назвал name="mytestform" , проверка выполняется, но когда я использую класс формы codeigniter, который я назвал name="mytestform1" формой, он не работает. Я не могу понять, в чем проблема.

это код.

  <?php

echo "in v_jquery_validation";

?>
<html> 

<!-- 
http://www.camcloud.com/blog/jquery-form-validation-tutorial 
-->
<head>

<meta charset="utf-8" />
<script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script language="javascript" type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js"></script>


<style type="text/css">
label.error { float: none; color: red; padding-left: .5em; vertical-align: top; }
</style>    



    </head>

    <body>

    <div style="border-style:solid; border-width:2px;border-color:red;min-height:110px;width:220px;">

                  <?php $attributes = array( 'id' => 'mytestform1','name' => 'mytestform');

        echo form_open('','style="width:200px;min-height:100px;border-style:solid;float:right; border-width:1px;border-color:green;"',$attributes);?>

                      <p>
                       <label for="aname">Name:amp;nbsp;</label>
                      <input name="aname" size="20" />
                       </p>
                       <p>

                      <input class="submit" type="submit" value="Submit"/>
                       </p>
        <?php  echo form_close( ); ?>

      </div>

      <div>
      <form id="mytestform" name="mytestform" method="get"  style="width:200px;min-height:100px;border-style:solid;float:left; border-width:1px;border-color:black;"  action="">
                      <p>
                       <label for="aname">Name:amp;nbsp;</label>
                      <input name="aname" size="20" />
                       </p>
                       <p>

                      <input class="submit" type="submit" value="Submit"/>
                       </p>
       </form>
</div>

 <script>
$(function() {
   $( "#mytestform" ).validate({
           rules: {
                   aname: {
                           required: true,
                           minlength: 4,
                           maxlength: 20,
                           customvalidation: true
                   }
           },
           messages: {
                   aname: {
                           required: "Dude, enter a name",
                           minlength: $.format("Keep typing, at least {0} characters required!"),
                           maxlength: $.format("Whoa! Maximum {0} characters allowed!")
                   }
           }
   });
   $.validator.addMethod("customvalidation",
           function(value, element) {
                   return /^[A-Za-zd=#$%@_ -] $/.test(value);
           },
   "Sorry, no special characters allowed"
   );
});


$(function() {
       $( "#mytestform1" ).validate({
               rules: {
                       aname: {
                               required: true,
                               minlength: 4,
                               maxlength: 20,
                               customvalidation: true
                       }
               },
               messages: {
                       aname: {
                               required: "Dude, enter a name",
                               minlength: $.format("Keep typing, at least {0} characters required!"),
                               maxlength: $.format("Whoa! Maximum {0} characters allowed!")
                       }
               }
       });
       $.validator.addMethod("customvalidation",
               function(value, element) {
                       return /^[A-Za-zd=#$%@_ -] $/.test(value);
               },
       "Sorry, no special characters allowed"
       );
    });
</script>


    </body>
  

Возможно, проблема связана с необычным кодом, который я вижу, когда нажимаю просмотр источника:

 <body>

    <div style="border-style:solid; border-width:2px;border-color:red;min-height:110px;width:220px;">

                  <form action="http://localhost/hacker_project_v1/c_jquery_validation" style="width:200px;min-height:100px;border-style:solid;float:right; border-width:1px;border-color:green;" method="post" accept-charset="utf-8"><div style="display:none">
<input type="hidden" name="id" value="mytestform1" />
<input type="hidden" name="name" value="mytestform" />
</div>              
                      <p>
                       <label for="aname">Name:amp;nbsp;</label>
                      <input name="aname" size="20" class= "required" />
                       </p>
                       <p>

                      <input class="submit" type="submit" value="Submit"/>
                       </p>
        </form>     
      </div>

      <div>
      <form id="mytestform" name="mytestform" method="get"  style="width:200px;min-height:100px;border-style:solid;float:left; border-width:1px;border-color:black;"  action="">
                      <p>
                       <label for="aname">Name:amp;nbsp;</label>
                      <input name="aname" size="20" />
                       </p>
                       <p>

                      <input class="submit" type="submit" value="Submit"/>
                       </p>
       </form>
</div>
  

Комментарии:

1. если вы измените имя формы, вам также придется изменить имя формы в коде javascript.

2. Я изменил его, но проблема все еще существует.

Ответ №1:

ваш код codeigniter неверен, он должен быть таким

     $attributes = array( 'id' => 'mytestform1','name' => 'mytestform','style'=>'width:200px;min-height:100px;border-style:solid;float:right; border-width:1px;border-color:green;');
    echo form_open('',$attributes);
  

Комментарии:

1. раджеш какават: Большое вам спасибо. Вы были правы, и изменение, которое вы сказали мне сделать, решило проблему!!!

Ответ №2:

Вместо использования проверки jQuery рассмотрите возможность использования средства проверки формы html, которое становится все более и более эффективным, чем jQuery, поскольку вы можете отключить работу jQuery, отключив javascript браузера.

Вам нужно только иметь и дополнительный атрибут в поле ввода, например: required="required"

Проверка формы HTML

А для проверки на стороне сервера CodeIgniter имеет классный библиотечный класс,

Проверка формы CodeIgniter

Часть представления,

 $this->data['first_name'] = array(
   'name'  => 'first_name',
   'id'    => 'first_name',
   'type'  => 'text',
   'class' => 'textbox',
   'value' => $this->form_validation->set_value('first_name', $user->first_name)
);
  

Часть проверки,

 $this->form_validation->set_rules('first_name', 'First Name', 'required|xss_clean');