0

これは、inputStringVga と inputStringCpu の 2 つの入力に対する 2 つの異なる関数ですが、2 つの入力が異なる ID (inputStringVga と inputStringCpu) を持っている場合でも、常に最初の関数のみをロードします。そして、最初の関数クエリだけをロードする代わりに、関数をロードさせる方法は?

function lookup(inputStringVga) {
    if(inputStringVga.length == 0) {
        $('#suggestions').fadeOut(); // Hide the suggestions box
    } else {
        $.post("rpc.php", {queryStringVga: ""+inputStringVga+""}, function(data) { // Do an AJAX call
            $('#suggestions').fadeIn(); // Show the suggestions box
            $('#suggestions').html(data); // Fill the suggestions box
        });
    }
}
function lookup(inputStringCpu) {
    if(inputStringCpu.length == 0) {
        $('#suggestions').fadeOut(); // Hide the suggestions box
    } else {
        $.post("rpc.php", {queryStringCpu: ""+inputStringCpu+""}, function(data) { // Do an AJAX call
            $('#suggestions').fadeIn(); // Show the suggestions box
            $('#suggestions').html(data); // Fill the suggestions box
        });
    }
}

rpc.php ファイル

$querystring = JRequest::getVar('queryStringCpu');
    if(isset($querystring)) {
if(strlen($querystring) >0) {

    $query = "SELECT cpuname FROM #__cpu WHERE cpuname LIKE '%" . $querystring . "%' ORDER BY cpuname LIMIT 50";
    $db->setQuery( $query );
    $db->query( $query ) or die('Blogai');
    $qq = $db->loadObjectList();

    foreach ($qq as $aa) {
    echo '<div class="aa">'.$aa->cpuname.'</div>';
        }
    }
}
$querystring2 = JRequest::getVar('queryStringVga');

    if(isset($querystring2)) {
if(strlen($querystring2) >0) {

    $query2 = "SELECT vganame FROM #__cpu WHERE vganame LIKE '%" . $querystring2 . "%' ORDER BY vganame LIMIT 50";
    $db->setQuery( $query2 );
    $db->query( $query2 ) or die('Blogai');
    $qq2 = $db->loadObjectList();

foreach ($qq2 as $aa2) {
    echo '<div class="aa1">'.$aa2->vganame.'</div>';
        }
    }
}
4

2 に答える 2

1

あなたがやろうとしていることから判断すると、次のようなものが必要になります。

<input name="'.$this->name.'" type="text" size="50" value="'.$this->value.'" id="inputStringVga" onkeyup="lookup(this.value, this.id);" /></input> <div id="suggestions"></div>

とあなたのJS:

function lookup(val, id) {
    if(val.length == 0) {
        $('#suggestions').fadeOut(); // Hide the suggestions box
    } else {
        aa = {};
        aa[id] = ""+val+"";
        $.post("rpc.php", aa, function(data) { // Do an AJAX call
            $('#suggestions').fadeIn(); // Show the suggestions box
            $('#suggestions').html(data); // Fill the suggestions box
        });
    }
}

その連想配列がどのように形成されているかを混乱させる必要があるかもしれませんが、それでも..

于 2012-11-07T16:48:07.317 に答える
0

どちらも同じ機能です。したがって、1 つの関数が によって上書きされますsignature of current function。関数定義は、コードが読み取られる前に最初に読み取られるためです。

どちらも同じ署名を持っています function lookup() ..引数の数は問題になりません。

于 2012-11-07T16:27:28.450 に答える