我已经在网上拖了一段时间,试图找到一个冷却帮助我的解决方案,但没有运气。
我有一个简单的销售表单,用户从下拉列表中选择产品。在选择值时,我希望将输入框值传递给数据库查询,并在表单上显示查询结果(价格)。如果可能,我希望结果填充输入框,以便销售人员可以根据需要进行调整。
我正在使用codeigniter,这使得找到一个很好的例子非常困难。
控制器
function new_blank_order_lines()
{
$this->load->view('sales/new_blank_order_lines');
}
模型
function get_sku_price($q){
$this->db->select('ProductPrice');
$this->db->where('ProductCode', $q);
$query = $this->db->get('ProductList');
if($query->num_rows > 0){
foreach ($query->result_array() as $row){
$row_set[] = htmlentities(stripslashes($row['ProductPrice'])); //build an array
}
$this->output->set_content_type('application/json')->set_output(json_encode($row_set));
}
}
查看
<table>
<tr><td>Product</td><td>Price</td></tr>
<tr>
<td><select name="product">
<option="sku1">product 1</option>
<option="sku2">product 2</option>
<option="sku3">product 3</option>
<select></td>
<td><input type="text" id="price" name="price" /></td>
</tr>
</table>
我已经加载了jquery库,1.9.1。
我有自动完成工作,但sytax不一样。
所以我想要的是,当我从product
下拉列表中选择产品代码时,将值传递给模型,然后在输入框中显示查询结果(价格){ {1}}。
任何人都可以提供一些有关如何做到这一点的见解,或者一个好的工作示例吗?
万分感谢,这个社区真棒!
的Fabio
控制器:
price
观点:
function new_blank_order_lines()
{
$this->load->view('sales/new_order');
}
获取数据库数据的控制器:
<script>
$("#product").change(function () {
//get the value of the select when it changes
var value = $("#product").val()
//make an ajax request posting it to your controller
$.post('<?=base_url("sales/get_sku_prices")?>', {data:value},function(result) {
//change the input price with the returned value
$('#price').value(result);
});
});
</script>
<table>
<tr><td>Product</td><td>Price</td></tr>
<tr>
<td><select name="product" id="product">
<option value="sku1">product 1</option>
<option value="sku2">product 2</option>
<option value="sku3">product 3</option>
</select></td>
<td><input type="text" id="price" name="price" /></td>
</tr>
</table>
型号:
function get_sku_prices(){
//check if is an ajax request
if($this->input->is_ajax_request()){
//checks if the variable data exists on the posted data
if($this->input->post('data')){
$this->load->model('Sales_model');
//query in your model you should verify if the data passed is legit before querying
$price = $this->your_model->get_sku_price($this->input->post('data', TRUE));
echo $price;
}
}
}
答案 0 :(得分:1)
您的观点:
<table>
<tr>
<td>Product</td>
<td>Price</td>
</tr>
<tr>
<td>
<select name="product" id="product">
<option value="sku1">product 1</option>
<option value="sku2">product 2</option>
<option value="sku3">product 3</option>
</select>
</td>
<td>
<input type="text" id="price" name="price" />
</td>
</tr>
</table>
javascript
<script>
$("#product").change(function () {
//get the value of the select when it changes
var value = $("#product").val()
//make an ajax request posting it to your controller
$.post('<?=site_url("controller/function")?>', {data:value},function(result) {
//change the input price with the returned value
$('#price').value(result);
});
});
</script>
控制器:
public function your_funtion(){
//check if is an ajax request
if($this->input->is_ajax_request()){
//checks if the variable data exists on the posted data
if($this->input->post('data')){
$this->load_model('your_model')
//query in your model you should verify if the data passed is legit before querying
$price = $this->your_model->get_price($this->input->post('data', TRUE));
echo $price;
}
}
}
答案 1 :(得分:0)
使用jquery的ajax,post或get并更改event ..使用此处发布
例如..
$('select[name="product"]').change(function(){
var val=$(this).val();
$.post('path/to/controller',{data:val},function(result){
$('#price').val(result.price);
}, "json");
});
conroller funciton
$product=$this->input->post('data'); //this will give you the selected value of select
//make query to db in model..get price and
$price = ..//price that you got from db
echo json_encode(array('price'=> $price));