0

次のjQueryコードがあります:

$(document).ready(function(){
var ac_config = {
    source: "autocomplete-delta.php",
    select: function(event, ui){
        $("#del_item").val(ui.item.SKU);
        if ((ui.item.CASE_PRICE) != "N/A"){
            $("#del_price").val(ui.item.CASE_PRICE);
        } else {
            $("#del_price").val(ui.item.UNIT_PRICE);
        }
    },
    minLength:1
};
$("#del_item").autocomplete(ac_config);
});

これは 1 つの項目に対して正常に機能します。基本的に、項目は項目名を受け取ります。これは、オートコンプリート用に入力するフィールドであり、それを選択した後、価格フィールドに DB からの単価またはケース価格が入力されます。今、私はこれらの行を 18 個持って、php で del_item1、del_item2 などに設定したいと思っています。次のコードを試してみると、オートコンプリートが機能し、アイテムはうまく入力されますが、価格フィールドは入力されません。何か案は...?

$(document).ready(function(){
for (var i = 1; i < 19; i++) {  
    var ac_config = {
    source: "autocomplete-delta.php",
    select: function(event, ui){
        $("#del_item" + i).val(ui.item.SKU);
        if ((ui.item.CASE_PRICE) != "N/A"){
            $("#del_price" + i).val(ui.item.CASE_PRICE);
        } else {
            $("#del_price" + i).val(ui.item.UNIT_PRICE);
        }
    },
    minLength:1
};
$("#del_item" + i).autocomplete(ac_config);
}); 
4

1 に答える 1

0

JSが参照するphpファイルは次のとおりです。

<?php
require_once "/home/default/support/default.php";
$dbh = showDB ();
$cities = array();
$sth = $dbh->prepare("SELECT * FROM purchase_items");
$sth->execute();

 while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
$cities[]=$row;
 }

$term = trim(strip_tags($_GET['term']));

$matches = array();
foreach($cities as $city){
if((stripos($city['SKU'], $term) !== false) || (stripos($city['FAMILY'], $term) !== false) || (stripos($city['DESCRIPTION'], $term) !== false)){
    // Add the necessary "value" and "label" fields and append to result set
    $city['value1'] = $city['SKU'];
    $city['value2'] = $city['FAMILY'];
    $city['value3'] = $city['DESCRIPTION'];
    $city['label'] = "{$city['FAMILY']} - {$city['DESCRIPTION']} ({$city['SKU']})";
    $matches[] = $city;
}
}
$matches = array_slice($matches, 0, 100);
print json_encode($matches);

そして、これが上記で要求されたhtml側です。これらは、私が使用している16のラインアイテムです。forループ内では、ループ内のカウンターは$dです。

if($d&1) { ?>
<div id="trow">
<? } else { ?>
<div id="trow" class="none">
    <? } ?>
        <div id="thirds" style="text-indent:5px;">
    <input type="text" name="del_item<? echo("$d");?>" id="del_item<? echo("$d");?>" class="salesinput"
    placeholder="Start typing item SKU, family, description..." style="text-align:left; width:95%;" />
    </div>
    <div id="dollar"><span class="tdblackbigger">$ </span></div>
    <div id="lfamt" style="width:15%;"><input type="text" name="del_price<? echo("$d");?>" id="del_price<? echo("$d");?>" class="salesinput" style="text-align:right; padding-right:5px;" /></div>
    <div id="lfsold" style="width:15%;"><input type="text" name="del_retail<? echo("$d");?>" id="del_retail<? echo("$d");?>" class="salesinput" /></div>
    <div id="dollar"><span class="tdblackbigger">$ </span></div>
    <div id="lfamt" style="width:15%;"><input type="text" name="del_line<? echo("$d");?>" id="del_line<? echo("$d");?>" class="salesinput" style="text-align:right; padding-right:5px;" /></div>
       </div>
于 2012-09-21T02:10:10.810 に答える