123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- $(document).ready(function() {
- $("#productSearch").on("input",
- function() {
- var str = $(this).val();
- $.ajax({
- type: "GET",
- url: "Searchproduct.php",
- dataType: "html",
- contentType: "application/json;charset=utf-8",
- data: {
- "str": str
- },
- timeout: 20000,
- success: function(e) {
- $("#productlist").show();
- $("#productlist ul").html(e);
- }
- });
- });
- $(".productlist li").live("click",
- function() {
- var id = $(this).data("id");
- var unit = $(this).data("unit");
- var productName = $(this).find(".name").html();
-
- // 检查该产品是否已存在
- var existingProduct = false;
- $("input[name='productId[]']").each(function() {
- if ($(this).val() == id) {
- existingProduct = true;
- return false; // 跳出循环
- }
- });
-
- if (existingProduct) {
- // 如果产品已存在,显示提示并阻止添加
- // 从HTML内容中提取纯文本产品名称(不包含分类标签)
- var tempDiv = document.createElement("div");
- tempDiv.innerHTML = productName;
- var plainProductName = tempDiv.textContent || tempDiv.innerText || "";
- plainProductName = plainProductName.split('[')[0].trim(); // 移除分类部分
-
- alert("产品「" + plainProductName + "」已添加,不能重复添加");
- $("#productlist").hide();
- $("#productSearch").val("");
- return false;
- }
-
- var n = "<div class='proname'>" + productName + "</div>";
- var pic = "<div class='propic'>" + $(this).find(".pic").html() + "</div>";
- var item = "<div class='proitem'><div class='prodelet'></div>" + n + pic + "<div class='proprice'><div class='priceitem'><input type='hidden' name='productId[]' value="+id+"><label>≥</label><input type='number' autocomplete='off' class='txt3 num' name='num[]'><label class='unit'>" + unit + "</label> <label>售价</label><input type='text' class='txt3 price' autocomplete='off' name='price[]'><label>RMB</label> <span class='additem'></span><span class='delitem'></span><span class='note'></span></div></div></div>";
- $(".prowapper").append(item);
- $("#productlist").hide();
- $("#productSearch").val("");
- })
- $(".prodelet").live("click",
- function() {
- $(this).parent().remove();
- })
- $(".priceitem .additem").live("click",
- function() {
- var priceitem = $(this).parent().clone();
- var i = $(this).parent().index();
- var lastnum = $(".priceitem").eq(i).find(".num").val();
- var lastprice = $(".priceitem").eq(i).find(".price").val();
- var productId = $(this).parent().find("input[name='productId[]']").val();
-
- if (lastnum == "" || lastprice == "") //未输入无法继续添加
- {
- return false
- } else {
- // Make sure cloned item has array notation for field names
- priceitem.find("input[name='productId[]']").val(productId);
- priceitem.find(".num").val("");
- priceitem.find(".price").val("");
- $(this).parent().after(priceitem);
- }
- })
- $(".priceitem .delitem").live("click",
- function() {
- var n = $(this).parent().siblings().length;
- if (n > 0) {
- priceitem = $(this).parent().remove();
- } else {
- return false
- }
- })
- $(".priceitem .price").live("blur",
- function() {
- var pprice; //Pre数量
- var cprice = $(this).val(); //当前数量
-
- // 找到当前价格所在的产品区域
- var currentProduct = $(this).closest('.proprice');
- // 在当前产品内找出所有价格项
- var priceItems = currentProduct.find('.priceitem');
- // 获取当前价格项在当前产品内的索引
- var currentIndex = $(this).closest('.priceitem').index();
-
- // 只有当不是第一个价格项时才需要验证
- if (currentIndex > 0) {
- // 获取同一产品内的上一个价格项的价格
- pprice = priceItems.eq(currentIndex - 1).find(".price").val();
- // 使用parseFloat进行数值比较而不是eval
- if (pprice && parseFloat(cprice) > parseFloat(pprice)) {
- $(this).parent().find(".note").html("当前售价不能高于上一项");
- $(this).select();
- }
- else {
- $(this).parent().find(".note").html("");
- }
- }
- })
- $(".priceitem .num").live("blur",
- function() {
- var pnum; //Pre数量
- var cnum = $(this).val(); //当前数量
-
- // 找到当前数量所在的产品区域
- var currentProduct = $(this).closest('.proprice');
- // 在当前产品内找出所有价格项
- var priceItems = currentProduct.find('.priceitem');
- // 获取当前价格项在当前产品内的索引
- var currentIndex = $(this).closest('.priceitem').index();
-
- // 只有当不是第一个价格项时才需要验证
- if (currentIndex > 0) {
- // 获取同一产品内的上一个价格项的数量
- pnum = priceItems.eq(currentIndex - 1).find(".num").val();
- // 使用parseFloat进行数值比较而不是eval
- if (pnum && parseFloat(cnum) < parseFloat(pnum)) {
- $(this).parent().find(".note").html("当前数量不能小于上一项");
- $(this).select();
- }
- else {
- $(this).parent().find(".note").html("");
- }
- }
- })
- });
|