只是想问一个问题如何在弹出对话框中传递codeigniter表单验证。现在我创建了一个表单,其中包含类别列表以及编辑和删除按钮。该方案是当成员单击更新按钮时,将弹出一个显示“添加新类别”表单的对话框。实际上我在弹出窗口中加载了我的html表单。我的问题是,如果用户输入了重复的类别名称,则表单验证应出现在弹出对话框中。在我的情况下,它将打开一个显示我的表单的新页面,同时验证错误。如何在弹出式窗口jquery中显示表单验证?这是所有人都感谢。
这是我的一些代码(即使用Codeigniter)
// homepage.php(显示类别明细列表)
<?php $data_var = array('name'=>'category','id'=>'addForm'); ?>
<?php echo form_open('category_controller/delete_category',$data_var); ?>
<input class="classname1" type="button" value="ADD" name="add_category"/> <!-- button for add -->
<!-- BLOW IS MY FOREACH FOR DISPLAYING INFO -->
.
.
.
foreach($queryViewEntries as $row){
$temp_id = $row['salescatid'];
echo "<tr>";
echo "<td width='5%' style='text-align: center'><input type='checkbox' name='category[]' value=".$row['salescatid']." id=check".$row['salescatid']." onclick='check(this)' /></td>";
echo "<td width='10%'>{$row['salescatname']}</td>";
echo "<td>{$row['salescatdesc']}</td>";
?>
<td width="15%" style="text-align: center;">
<?php
$cat_id = $row['salescatid'];
?>
<input type="hidden" name="cat_id" value="<?php echo $cat_id; ?>" />
<input type="button" name="edit_item" data-value="<?php echo $cat_id; ?>" value="EDIT" />
<input type="button" name="delete_item" value="DELETE" data-value="<?php echo $cat_id; ?>" />
</td>
<?php
echo "</tr>";
}
....
<!-- MY DIV -->
<div id="popup" style="display: none;"></div>
<div id="edit" style="display: none"></div>
<div id="delete" style="display: none;"></div>
....
....
<!-- BELOW IS MY JQUERY FUNCTION THAT WILL CALL THE POP UP AND LOAD MY HTML FORM INSIDE IT.
$(function(){
/* FOR ADD PAGE */
$(".hero-unit input[name=add_category]").on('click',function(){
$('#popup').load("<?php echo site_url("category_controller/addCategoryItem/"); ?>").dialog({
title: "Add New Category",
autoOpen: true,
width: 450,
modal:true,
open: function (event, ui) { window.setTimeout(function () {
jQuery(document).unbind('mousedown.dialog-overlay').unbind('mouseup.dialog-overlay'); }, 100);
},
close: function() {
$('#popup').dialog("close");
}
});
});
// category_controller.php(我的控制人员)
<?php
class Category_Controller extends CI_Controller{
public function __construct(){
parent::__construct();
}
public function addCategoryItem(){
$this->form_validation->set_rules('name','Category Name','required|is_unique[sales_category.salescatname]');
$this->form_validation->set_rules('description','Description','required');
if($this->form_validation->run() == FALSE){
$data['title'] = "Add Item";
$data['copyright'] = date('Y');
$this->load->view('User/header/header_user',$data);
$this->load->view('Item/contents/addNewItem');
}else{
$this->category_model->addCategory();
$this->load->view('Item/contents/duccessAdd');
}
}
}
// controller_model.php(我的模型功能)
public function addCategory(){
$cname = ucwords($this->input->post('name'));
$cdesc = $this->input->post('description');
$insertCategory = array(
'salescatid' => NULL,
'salescatname' => $cname,
'salescatdesc' => $cdesc,
);
$result = $this->db->insert('sales_category',$insertCategory);
if($result){
return TRUE;
}else{
return FALSE;
}
}
// addNewItem.php(我的用于添加新类别的表单)
<?php $attr = array('class'=>'form-signin','id'=>'addForm'); ?>
<?php echo form_open('category_controller/insertItem',$attr); ?>
<h2 class="form-signin-heading"></h2>
<h5 style="font-weight: normal;">Category Name:</h5>
<input type="text" class="input-block-level" placeholder="Category Name" required="required" name="name" autofocus="autofocus" value="<?php echo set_value('name'); ?>"/>
<label style="color: red;"><?php echo form_error('name'); ?></label>
<h5 style="font-weight: normal;">Desciption</h5>
<input type="text" class="input-block-level" placeholder="Description" required="required" name="description" value="<?php echo set_value('description'); ?>" />
<label style="color: red;"><?php echo form_error('description'); ?></label>
<br />
<div align="right">
<input type="submit" value="OK" class="btn btn-large btn-primary" />
<input type="button" value="CANCEL" class="btn btn-large btn-primary" name='cancel' />
</div>
<?php echo form_close(); ?>
这是我的代码示例,希望你能帮助我们。感谢。
答案 0 :(得分:0)
你有两个选择,都需要使用javascript。第一种是直接在javascript中执行表单验证,前提是您不需要进行任何需要来自服务器/数据库的信息的复杂表单检查。或者,您可以使用ajax提交表单并阅读请求以显示错误或向用户提供成功消息。
由于看起来您正在检查数据库中是否已存在类别,因此可能需要使用ajax来执行验证。
此代码将阻止表单正常提交并调用javascript函数。
<?php $attr = array('class'=>'form-signin','id'=>'addForm', 'onsubmit'=>'submitForm(); return false;'); ?>
<?php echo form_open('category_controller/insertItem',$attr); ?>
然后在您的网页上的某个地方使用javascript:
function submitForm() {
$.ajax({
url:<?php echo site_url('category_controller/insertItem'); ?>,
data: {field1:$("#field1").val(), field2:$("#field2").val()}
}).done(function(data){
$('#someDiv').innerHTML(data);
};
return FALSE;
}
(您需要列出要发送到服务器的每个POST数据,并在data
部分中检索其值。)
ajax调用您的控制器中的addCategoryItem()
函数应该只返回成功消息或验证错误。当请求完成任何页面输出将被放入ID为someDiv
的元素内时。