处理2个不同的选择选项,它们只是附加了jquery

时间:2013-10-22 06:23:03

标签: javascript jquery select append options

首先感谢这个问题https://stackoverflow.com/questions/14792014/select-option-which-were-just-appended-with-jquery

我有另一个问题,当来自sql的spilting数据的选项值结果在一个页面中有两个选择。

这是我的代码 作为默认页面

    <div>
    Warehouse Product
  <br><input type="text" id="wh" readonly/>WHK</br>
    </br>
    Nomor Rak
         <br><input type="text" id="posisi" readonly/></br>
    Product Kategori
         <br><select id="pkategori">
         <option selected = "selected" value = "option1">-Kategori Produk-</option>
                <?php
                $q = mssql_query("SELECT DISTINCT ProductCategory from tblMstProductUHT1"); 

                while ($r = mssql_fetch_array($q)){
                echo "<option value='$r[ProductCategory]'>$r[ProductCategory]</option>";
            }?>
            </select>
        </br>
    Nama Produk
        <br><select id="pname">
        <option selected = "selected" value="option1" >-Nama Produk-</option>
        <?php
                $q = mssql_query("SELECT DISTINCT ProductName from tblMstProductUHT1"); 

                while ($r = mssql_fetch_array($q)){
                echo "<option  value='$r[ProductName]'>$r[ProductName]</option>";
            }?>
         </select>
        </br>
    Kode Produksi
    <br><input type='text' id="pdate"></br>
    Line/FM
    <br><input type='text' id="line"></br>
    Nomor Palet
         <br><input type="text" id="pnumber"/>
         </br>
    Nomor Seri Produk
    <br><input type='text' id="seri"></br>
    Quantity(Carton)
    <br><input type='text' id="quantity"></br>
    <button id="save">Save</button>
    <button id="edit">Edit</button>
    <button id="view">View</button>
    <button id="delete">Delete</button>
    </div>

您会看到两个选择选项<select id="pkategori"><select id="pname">。现在对于编辑按钮,我使用下面的ajax调用可用数据

    $("#edit").click(function(){
    posisi = $("#posisi").val();
    $.ajax({
            type:'POST',
            url: "aksi.php",
            data: "op=edit&posisi="+posisi,
            cache: false,
            success: function(msg){
    if(msg=="error"){
    $(".status").html("<font color='##480000'><strong> Data tidak ditemukan..! </strong></font>");
    }
    else{
    //karna di server pembatas setiap data adalah |
        //maka kita split dan akan membentuk array
        data = msg.split("|");            
    //masukkan ke masing-masing textfield
     var r = [data[0]];
    options = [{id:0, value:r}];
    for(var i = 0; i < options.length; i++) {
        var data = options[i];
        var option = $('<option id="pkategoriOption_' + data['id'] + '" class="pkategori" value="' + data['value'] + '">' + data['value'] + '</option>');
        $('#pkategori').append(option);     
    }
$("#pkategori .pkategori:first").prop('selected', true);

    var s = [data[1]];
    options = [{id:0, value:s}];
    for(var i = 0; i < options.length; i++) {
        var data = options[i];
        var option = $('<option id="pnameOption_' + data['id'] + '" class="pname" value="' + data['value'] + '">' + data['value'] + '</option>');
        $('#pname').append(option);     
    }
$("#pname .pname:first").prop('selected', true);

     $("#pdate").val(data[2]);
     $("#pnumber").val(data[3]);
     $("#seri").val(data[4]);
     $("#quantity").val(data[5]);
     $("#line").val(data[6]);  
     //hilangkan status dan animasi loading
     $(".status").html("");
     $(".loading").hide();
     }
     }
    });
    });

on url: "aksi.php",我使用“|”拆分数据。根据我首先联系的问题。我成功地在<select id="pkategori">附加了选项值,并将其设置为默认选择。

但是当我对第二个选项<select id="pname">使用相同的代码时,它会导致错误,并且我分割的数据不显示。所以我卡住了,问题是什么?

1 个答案:

答案 0 :(得分:1)

实际上你的链接有答案。在你的代码中你只有类似的var。这意味着“数据”,它会导致冲突。 Jquery会混淆绑定数据, 所以你只需将data = msg.split("|");更改为另一个名称变量。

您的代码如下所示

$("#edit").click(function(){
    posisi = $("#posisi").val();
    $.ajax({
            type:'POST',
            url: "aksi.php",
            data: "op=edit&posisi="+posisi,
            cache: false,
            success: function(msg){
    if(msg=="error"){
    $(".status").html("<font color='##480000'><strong> Data tidak ditemukan..! </strong></font>");
    }
    else{
    //karna di server pembatas setiap data adalah |
        //maka kita split dan akan membentuk array
        da = msg.split("|"); // it can be another variable name           
    //masukkan ke masing-masing textfield
     var r = [da[0]];
    options = [{id:0, value:r}];
    for(var i = 0; i < options.length; i++) {
        var data = options[i];
        var option = $('<option id="pkategoriOption_' + data['id'] + '" class="pkategori" value="' + data['value'] + '">' + data['value'] + '</option>');
        $('#pkategori').append(option);     
    }
$("#pkategori .pkategori:first").prop('selected', true);

    var s = [da[1]];
    options = [{id:0, value:s}];
    for(var i = 0; i < options.length; i++) {
        var data = options[i];
        var option = $('<option id="pnameOption_' + data['id'] + '" class="pname" value="' + data['value'] + '">' + data['value'] + '</option>');
        $('#pname').append(option);     
    }
$("#pname .pname:first").prop('selected', true);

     $("#pdate").val(da[2]);
     $("#pnumber").val(da[3]);
     $("#seri").val(da[4]);
     $("#quantity").val(da[5]);
     $("#line").val(da[6]);  
     //hilangkan status dan animasi loading
     $(".status").html("");
     $(".loading").hide();
     }
     }
    });
    });