我有一個表格的形式。該表格包含三個用戶輸入。數量,行項目和價格。在用戶提交表單之前,我需要填寫所有三個。該表允許添加行。Codeigniter驗證數組的形式
這是我的桌子。
<form id="add_quote_form" name="add_quote_form" class="form-horizontal">
<table style="width: 90%" id="myTable" class="centered-table table table-bordered">
<thead>
<tr>
<th>Item</th>
<th>Qty</th>
<th>Price</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td style="width: 60%"><input type="text" name="detail[]"required></td>
<td style="width: 10%"><input type="number" name="qty[]" required></td>
<td style="width: 15%"><input type="number" name="price[]" required></td>
<td style="width: 12%"><div class="inline"><input type="button" id="addButton" class="btn btn-primary btn-xs" value="Add"/></div><div class="inline"><input type="button" id="deleteButton" class="btn btn-primary btn-xs" value="Delete"/></div>
</tr>
</tbody>
</table>
<input type="button" id="saveBtn" name="saveBtn" class="btn btn-primary" value="Create Order" onClick="this.disabled=true; add_quotation();return false;">
</form>
功能添加行表
$(function(){
$("#addButton").click(function(){
$(this).closest("tr").clone(true).appendTo("#myTable");
});
$("#deleteButton").click(function(){
// var x = document.getElementById("myTable").rows.length;
var x = $('#myTable tr').length;
if(x == 2){
} else {
$(this).closest("tr").remove();
}
});
});
功能要求提交按鈕
function add_quotation() {
document.add_quote_form.saveBtn.value="Saving...";
var formArray = $('#add_quote_form').serialize();
jQuery.post('<?php echo base_url(); ?>index.php/quotes/add_work_order_validation/' , formArray, function(data)
{
//alert('here');
if (data.success)
{
//GetQuotesPage();
//location.reload(base_url+'quotes');
//window.location = base_url+'quotes';
document.add_quote_form.saveBtn.value="Save Order";
document.add_quote_form.saveBtn.disabled=false;
swal({
title: "Order Saved!",
// text: "You clicked the button!",
type: "success"
});
//alert("Quote Saved");
}
else
{
document.add_quote_form.saveBtn.value="Save Order";
document.add_quote_form.saveBtn.disabled=false;
for (var i in data.errors)
{
$('#'+i).css('border-color', 'red');
$('#'+i).validationEngine('showPrompt', data.errors[i], '', 'topRight', true);
}
for (var z in data.hidden)
{
$('#add_quote_form#' +data.hidden[z]).validationEngine('hide');
}
}
}, 'json');
return false;
}
這裏是我的控制器
public function add_work_order_validation()
{
$this->form_validation->set_rules('quoteName', 'Quote Name', 'trim|required');
$this->form_validation->set_rules("dueDate", "Due Date", "trim|required");
$this->form_validation->set_rules('detail[]', 'Line Items','required|trim|callback_matchLineItems');
if ($this->form_validation->run() == FALSE)
{
$result['errors'] = array();
$result['hidden'] = array();
$result['success'] = false;
$fields = array('quoteName', "dueDate", "detail");
foreach ($fields as $field)
{
if (form_error($field))
{
$result['errors'][$field] = strip_tags(form_error($field));
}
else
{
$result['hidden'][] = $field;
}
}
}
else
{ //Post Form
}
而最後一部分我的回調函數
function matchLineItems() {
$detailArray = $this->input->post("detail");
$qtyArrayPost = $this->input->post("qty");
$priceArray = $this->input->post("price");
$qtyNumberCount = count($qtyArrayPost);
$priceNumberCount = count($priceArray);
$detailNumberCount = count($detailArray);
if($qtyNumberCount != $priceNumberCount || $qtyNumberCount != $detailNumberCount || $detailNumberCount != $priceNumberCount) {
$this->form_validation->set_message('matchLineItems', 'No Fields Can Be Left Blank');
return FALSE;
} else {
return TRUE;
}
}
我遇到的問題是當我將行項目字段留空時,表單未提交但未顯示錯誤。如果我將數據輸入到訂單項字段中,但將數量和價格字段留空,表單會提交。我需要爲表格中的每個字段創建驗證?我如何得到錯誤?
笨版本3.0.6
沒有'
什麼是你的codeigniter版本? – motto
@motto該版本是3.0.6 – bobthegoalie