【问题标题】:Dynamically added text field have default value of first text field动态添加的文本字段具有第一个文本字段的默认值
【发布时间】:2015-11-19 08:55:08
【问题描述】:

我有一个脚本,我可以在其中使用“添加按钮”添加文本字段,但其余字段获取第一个字段的默认值。您可以查看demo here。只需在演示中的项目字段中输入 Apple,您将获得 69 的价格。然后,当您单击“添加项目”按钮时,它会为所有生成的价格字段提供默认值 69。我想显示新商品的空白价格字段。

我的脚本:

添加动态行

function addRow(tableID) {
            var table = document.getElementById(tableID);
            var rowCount = table.rows.length;
            var row = table.insertRow(rowCount);
            var colCount = table.rows[0].cells.length;
            for(var i=0; i<colCount; i++) {
                var newcell = row.insertCell(i);
                newcell.innerHTML = table.rows[0].cells[i].innerHTML;
                //alert(newcell.childNodes);
                switch(newcell.childNodes[0].type) {
                    case "text":
                            newcell.childNodes[0].value = "";
                            break;
                    case "checkbox":
                            newcell.childNodes[0].checked = false;
                            break;
                    case "select-one":
                            newcell.childNodes[0].selectedIndex = 0;
                            break;
                }
            $(function() {
              var availableTags = [
              "Apple",
              "Samsung",
              "Blackberry",
              "Nokia",
              ];
              $('input[name="item[]"]').autocomplete({
                  source: availableTags
              });
            });
            }
        }

获取商品价格脚本

function getXMLHTTP() { //fuction to return the xml http object
        var xmlhttp=false;  
        try{
            xmlhttp=new XMLHttpRequest();
        }
        catch(e)    {       
            try{            
                xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(e){
                try{
                xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch(e1){
                    xmlhttp=false;
                }
            }
        }

        return xmlhttp;
    }
      function getproduct(element) {      

        var strURL="getProduct.php?product="+element.value; 
        var req = getXMLHTTP();

        if (req) {

            req.onreadystatechange = function() {
                if (req.readyState == 4) {
                    // only if "OK"
                    if (req.status == 200) {   
                        // last changes here:
                        element.parentNode.parentNode.getElementsByClassName('productdiv')[0].innerHTML=req.responseText;                       
                    } else {
                        alert("There was a problem while using XMLHTTP:\n" + req.statusText);
                    }
                }               
            }           
            req.open("GET", strURL, true);
            req.send(null);
        }       
    }

getProduct.php 脚本:

<?php 
$product = $_GET['product'];
if($product == "Apple") {
    $value = 69;
} else {
    $value = 59;
}
?>
<input name="unit_price[]" value="<?php echo $value; ?>" onkeyup="getValues()" id="unit_price" placeholder="Price" />

【问题讨论】:

    标签: javascript html javascript-events


    【解决方案1】:

    伙计,你的问题在于:newcell.innerHTML = table.rows[0].cells[i].innerHTML;

    无论如何,您总是将第一行值分配给新添加的项目

    【讨论】:

    • 那么我该如何更改它,我尝试了不同的选项,但没有为我解决。你能检查一下吗
    • 改变 newcell.innerHTML = table.rows[0].cells[i].innerHTML;到 newcell.innerHTML = '',然后它会一直为空。别忘了勾选我的答案兄弟!大声笑
    • 凯文,我试过了,但它不起作用。它甚至不会在您的代码中添加新行。
    • @Arif,能不能打开浏览器控制台,看看有没有报错?另外,你能创建一个jsfiddle,所以我可以解决这个问题吗?我没有本地 php 环境
    • 在控制台中,它给了我“addRow 未定义”的错误。我正在创建 jsfiddle 帐户,并会通知您。我的网很慢,而且要花很多时间。
    猜你喜欢
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    相关资源
    最近更新 更多