脚本仅加载2个不同输入的第一个函数,而不是单独加载它们

时间:2012-11-07 16:25:44

标签: jquery

这是2个输入的两个不同的函数 - inputStringVga和inputStringCpu,但是它总是只加载第一个函数,即使那时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>';
        }
    }
}

2 个答案:

答案 0 :(得分: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
        });
    }
}

可能需要搞乱这个关联数组的形成方式,但不过没有......

答案 1 :(得分:0)

它们都是相同的功能。因此signature of current function会将一个函数覆盖。因为在读取任何代码之前首先读取函数定义。

两者都有相同的签名function lookup() ..参数的数量不会受到质疑。