从发票中的数据库中获取值

用户名

我正在尝试在产品中使用自动完成功能从数据库中获取产品名称和价格的发票

对于第一行,它很容易实现,但是对于第二行,它根本不起作用。

index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="js/jquery-1.10.2.min.js"></script>
<script src="js/jquery-ui-1.10.4.custom.min.js" type="text/livescript"></script>
<link rel="stylesheet" href="syle/style.css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"   type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js" type="text/javascript"></script>
 <script type="text/javascript" src="js/main.js"></script>
<title>Untitled Document</title>
  <script>
  $(document).ready(function(){
var ac_config = {
    source: "autosuggest.php",
    select: function(event, ui){
        $(".menu_name").val(ui.item.menu_name);
        $(".menu_code").val(ui.item.menu_code);
        $(".menu_price").val(ui.item.menu_price);

        },
        minLength:1
        };
        $(".street").autocomplete(ac_config);
});

</script>
</head>

<body>
<form action="action.php" method="POST">

<table>
<tr>
<td>Invoice Number</td>
<td><input type="text" name="inv_no" id="inv_no" /></td>
</tr>
<tr>
<td>Invoice Date </td>
<td><input type="date" name="inv_date" id="inv_date" /></td>
</tr>
</table>

<table border="1" style="border-collapse:collapse">
<thead>
<tr>
<th>No</th>
<th>Product Name</th>
<th>Quantity</th>
<th>Price</th>
<th>Amount</th>
</tr>
</thead>
<tbody id="inv_detail">
<tr>
<th><b class="no">1</b></th>
<td><input type="text" class="street" class="menu_name"  name="p_name[]"  /></td>
<td><input type="text" name="qty[]" class="qty" /></td>
<td><input type="text" name="price[]" class="menu_price"  /></td>
<td align="right"><b class="amt"> </b></td>

</tr>
</tbody>
<tfoot>
<th colspan="6"><b class="total" value="add">0</b></th>
</tfoot>

</table>

</form>
<input type="button" id="click"  value="add"/>
</body>
</html>
<script type="text/javascript">
$.datepicker.setDefaults({
    changeMonth:true,
    changeYear:true,
    dateFormat:'yy/mm//dd'

    });
    $(function(){

    $('#click').click(function(){
       addnewrow();

    });

    $('#inv_detail').delegate('.p_name','change',function(){
        var p_name = $('.p_name:last').val();
        if(p_name !='')
        {
            addnewrow();
            }
            if($(this).val()== '' && $('.p_name').length > 1 && p_name == '')
            {
                $('.p_name:last').parent().parent().remove();   
                total();
            }

        });

        $('#inv_detail').delegate('.qty,.menu_price',function(){
            var tr = $(this).parent().parent();
            var qty = tr.find('.qty').val()-0;
            var menu_price = tr.find('.menu_price').val()-0;
            var amt = qty * menu_price;
            tr.find('.amt').html(amt);
            total();
            });

    $('input[type=date]').datepicker(); 
    $('body').delegate('input[type=date]',click,function(e)
    {
        $(this).datepicker();

        });



        function addnewrow()
        {
            var n = ($('#inv_detail tr').length-0)+1;
            var row ='<tr>'+
            '<th><b class="no">'+ n +'</b></th>'+   
            '<td><input type="text" name="p_name[]" class="menu_name"/></td>'+  
            '<td><input type="text" name="qty[]" class="qty"/></td>'+
            '<td><input type="text" name="price[]" class="menu_price"/></td>'+
            '<td allign="right"><b class="amt"></b></td>'+
            '</tr>';
            $('#inv_detail').append(row);
            }


    });
    function total(){

             var gg=0;
             $('.amt').each(function(i,el){
                 var amt = $(this).html()-0;
                 gg += amt;

            });
        $('.total').html(gg);
        }
</script>

action.php

<?php

$cn = mysql_connect('localhost','root','');
mysql_select_db('phpinvoice',$cn);
//if(isset($_post['submit']))
//{
    echo $sql="INSERT INTO inv (inv_no,inv_date)VALUES('{$_POST['inv_no']}','{$_POST['inv_date']}')";

$query=mysql_query($sql);
$id = mysql_insert_id();
$_p_name =  $_POST['p_name'];
$_qty =  $_POST['qty'];
$_price =  $_POST['price'];

for($i = 0;$i < count($_p_name);$i++)
{
    echo $sql1="INSERT INTO inv_detail SET
 inv_id='{$id}',
 p_name='$_p_name[$i]',
 qty='$_qty[$i]',
 price='$_price[$i]',



 ";
 $qyer=mysql_query($sql1);
header('Location:http://www.pingbd.com');
}


//}


?>   
紫杉醇

Javascript和因此的JQuery使用事件处理程序。为了使浏览器知道要处理的任何用户操作要执行哪个功能,您需要绑定一个事件处理程序。

在JQuery中,事件绑定也是如此(在您的情况下)是在执行javascript时完成的,在这种情况下是在运行时完成的。在初始事件绑定之后添加的任何项目都不会附加事件处理程序,因此永远不会执行功能。

要解决此问题,您需要将相同的事件处理程序添加到要添加到html的任何新元素中,然后从中运行函数。

示例1(jsfiddle(DOT)net / jLrcx2q6 /):

<button class="button">Show alert</button>

$(document).ready(function(){
    $(".button").click(function(){
        alert("test");
    });
});   

在此示例中(示例1),当页面加载click事件时,该事件“绑定”到了按钮,因此,当用户单击该事件时,会弹出带有“ test”文本的警报。

示例2(http://jsfiddle.net/ceney0jg/):

<div id="example-wrapper">
    <button class="button">Show alert</button>
</div> 

$(document).ready(function(){
    $(".button").click(function(){
        alert("test");
        $("#example-wrapper").append('<button class="button">Show alert</button>');
    });
});  

在此示例中,当用户按下按钮时,将再次显示带有文本“ test”的弹出窗口。但是,还会发生一个新按钮将添加到div(example-wrapper)中的情况。添加按钮后,没有“绑定”事件处理程序,因此,当用户按下按钮时,不会发生任何事情。

示例3-解决方案(jsfiddle.net/p8q4mfmv/):

<div id="example-wrapper">
    <button class="button">Show alert</button>
</div> 

$(document).ready(function(){
    $(".button").click(function(){
        addButton()
    });
}); 

function addButton()
{
     alert("test");
     $("#example-wrapper").append('<button class="button">Show alert</button>');   

     $(".button").click(function(){
        addButton()
     });
}

在您的代码中,您具有一个函数addnewrow()。此函数添加一个新的表格行。加载页面后,

$('#inv_detail').delegate('.p_name','change',function(){ 

将事件处理程序添加到p_name。但是,在执行函数addnewrow()之后,将添加新的表行,但是上述事件处理程序永远不会绑定到新元素。因此,浏览器将不会执行您想要执行的任何代码。

解决方案是绑定事件处理程序,例如:

function addnewrow()
{
    var n = ($('#inv_detail tr').length-0)+1;
    var row ='<tr>'+
    '<th><b class="no">'+ n +'</b></th>'+   
    '<td><input type="text" name="p_name[]" class="menu_name"/></td>'+  
    '<td><input type="text" name="qty[]" class="qty"/></td>'+
    '<td><input type="text" name="price[]" class="menu_price"/></td>'+
    '<td allign="right"><b class="amt"></b></td>'+
    '</tr>';
    $('#inv_detail').append(row);

    $('#inv_detail').delegate('.p_name','change',function(){
    var p_name = $('.p_name:last').val();
    if(p_name !='')
    {
        addnewrow();
        }
        if($(this).val()== '' && $('.p_name').length > 1 && p_name == '')
        {
            $('.p_name:last').parent().parent().remove();   
            total();
        }

    });

    $('#inv_detail').delegate('.qty,.menu_price',function(){
        var tr = $(this).parent().parent();
        var qty = tr.find('.qty').val()-0;
        var menu_price = tr.find('.menu_price').val()-0;
        var amt = qty * menu_price;
        tr.find('.amt').html(amt);
        total();
    });
}

这不是很好的代码,但是我认为它可以工作。您最好使用javascript文件而不是嵌入式javascript,以使您的代码在您的视图中更具可读性和独立性。

同样,在编写软件时,您应始终尝试使函数做的事情尽可能少。在最佳情况下,一个功能只有一个任务。

为了更好地理解这一点,我建议阅读http://courses.cs.washington.edu/courses/cse403/96sp/coupling-cohesion.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

TCPDF 从数据库中获取值

来自分类Dev

从数据库的列中的表中获取值

来自分类Dev

无法从PHP中的数据库获取值

来自分类Dev

在Android中按月从数据库获取值

来自分类Dev

无法从存储在数据库中的json获取值

来自分类Dev

使用从数据库中获取值的Codeigniter路由页面

来自分类Dev

Android如何从SQLite数据库的列中获取值

来自分类Dev

从mysql数据库获取值以在JSP中显示(JAVA)

来自分类Dev

无法从存储在数据库中的json获取值

来自分类Dev

从 XML 文件中获取值以插入数据库

来自分类Dev

无法从 Firebase 数据库中获取值

来自分类Dev

如何根据id从数据库中获取值

来自分类Dev

MySQL:在单个查询中从数据库和PHP数组中获取值

来自分类Dev

从领域数据库中获取值时,“需要领域迁移”,android中的异常

来自分类Dev

如何使用学说从Symfony2中的数据库表中获取值列表?

来自分类Dev

从数据库中获取值时线程主java.lang.NullPointerException中的异常

来自分类Dev

MySQL:在单个查询中从数据库和PHP数组中获取值

来自分类Dev

无法在devextreme dxDataGrid中显示从数据库中获取值

来自分类Dev

在 Laravel 中无循环地从数据库中获取值

来自分类Dev

如何从引导程序输入标签中获取值,然后插入到 mysql 数据库中

来自分类Dev

从mysql数据库中获取值并存储在php数组中

来自分类Dev

如何在 Soap UI 的免费版本中从数据库中获取值?

来自分类Dev

Django无法从另一个表中的数据库中获取值

来自分类Dev

从数据库中获取值的代码自动完成显示下拉列表中的所有值

来自分类Dev

从数据库中获取值作为有序映射

来自分类Dev

无法从ASP.NET中的SQL数据库准确获取值

来自分类Dev

遍历数据库获取值并将其放在datagridview中的特定位置

来自分类Dev

如何从html输入控件中获取值并将其插入sql数据库

来自分类Dev

在jsp中选择<option>时从数据库中获取值

Related 相关文章

  1. 1

    TCPDF 从数据库中获取值

  2. 2

    从数据库的列中的表中获取值

  3. 3

    无法从PHP中的数据库获取值

  4. 4

    在Android中按月从数据库获取值

  5. 5

    无法从存储在数据库中的json获取值

  6. 6

    使用从数据库中获取值的Codeigniter路由页面

  7. 7

    Android如何从SQLite数据库的列中获取值

  8. 8

    从mysql数据库获取值以在JSP中显示(JAVA)

  9. 9

    无法从存储在数据库中的json获取值

  10. 10

    从 XML 文件中获取值以插入数据库

  11. 11

    无法从 Firebase 数据库中获取值

  12. 12

    如何根据id从数据库中获取值

  13. 13

    MySQL:在单个查询中从数据库和PHP数组中获取值

  14. 14

    从领域数据库中获取值时,“需要领域迁移”,android中的异常

  15. 15

    如何使用学说从Symfony2中的数据库表中获取值列表?

  16. 16

    从数据库中获取值时线程主java.lang.NullPointerException中的异常

  17. 17

    MySQL:在单个查询中从数据库和PHP数组中获取值

  18. 18

    无法在devextreme dxDataGrid中显示从数据库中获取值

  19. 19

    在 Laravel 中无循环地从数据库中获取值

  20. 20

    如何从引导程序输入标签中获取值,然后插入到 mysql 数据库中

  21. 21

    从mysql数据库中获取值并存储在php数组中

  22. 22

    如何在 Soap UI 的免费版本中从数据库中获取值?

  23. 23

    Django无法从另一个表中的数据库中获取值

  24. 24

    从数据库中获取值的代码自动完成显示下拉列表中的所有值

  25. 25

    从数据库中获取值作为有序映射

  26. 26

    无法从ASP.NET中的SQL数据库准确获取值

  27. 27

    遍历数据库获取值并将其放在datagridview中的特定位置

  28. 28

    如何从html输入控件中获取值并将其插入sql数据库

  29. 29

    在jsp中选择<option>时从数据库中获取值

热门标签

归档