#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"
А для проверки на стороне сервера 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');