簡體   English   中英

在JavaScript和php之間來回傳遞表單ID作為變量

[英]Passing form ID's as a variable back and forth between javascript and php

首先,我要說的是雖然我非常擅長PHP和HTML,但對javascript / jquery的了解卻不多。 如果這個問題之前已經得到解答,我也深表歉意,但是我在搜索中找不到任何東西很幸運。

我正在一個項目中,我們要確定某種形式的大小,我想將一些自動完成功能構建到其中。 表單字段和必要的div使用計數器命名,如下面的代碼所示。

$set_b = 'upl_band'.$count;
$sugbox = $set_b."sug";
$autobox = $set_b."auto";
echo "<div><input type=text name='$set_b' size=25 id='$set_b' onkeyup='bandlookup(this.value,'$set_b');' onblur='bandfill();'></div>";
echo "<div class='suggestionsBox' id='$sugbox' style='display: none;'><img src='upArrow.png' style='position: relative; top: -12px; left: 30px;' alt='upArrow' /><div class='suggestionList' id='$autobox'>&nbsp;</div></div>";

我正在嘗試將主要值-$ set_b傳遞到我的javascript onkeyup中。 但是,在某些地方,我正在失去自己的價值觀。 如果我用具體的id設置表單,則此代碼可以正常工作,但是當我將id設置為變量時,我會迷路。 我的JavaScript在下面。 調用band.php是我的查找腳本。

function bandlookup(bandString, boxName) {
    if(bandString.length == 0) {
        // Hide the suggestion box.
        var s = boxName+"sug";
        $("#"+s).hide();
    } else {
        var su = boxName+"sug";
        var suauto = boxName+"auto";
        $.post("band.php", {queryString: ""+bandString+"", inputName: ""+boxName+""}, function(data){
            if(data.length >0) {
                $("#"+su).show();
                $("#"+suauto).html(data);
            }
        });
    }
} // lookup

function bandfill(thisValue, boxName) {
    var s = boxName+"sug";
    $("#"+boxName).val(thisValue);
    setTimeout("$('#'+s).hide();", 200);
}

和band.php

$db = new mysqli('localhost', 'yourUsername', 'yourPassword', 'yourDatabase');

if(!$db) {
    // Show error if we cannot connect.
    echo 'ERROR: Could not connect to the database.';
} else {
    // Is there a posted query string?
    if(isset($_POST['queryString'])) {
        $queryString = $db->real_escape_string($_POST['queryString']);
        $box = $_POST['inputName'];
        // Is the string length greater than 0?

        if(strlen($queryString) >0) {
                $query = $db->query("SELECT band_name,band_id FROM upl_band WHERE band_name LIKE '$queryString%' LIMIT 10");
                if($query) {
                    // While there are results loop through them - fetching an Object (i like PHP5 btw!).
                    while ($result = $query ->fetch_object()) {
                        // Format the results, im using <li> for the list, you can change it.
                        // The onClick function fills the textbox with the result.
                        echo '<li onClick="bandfill(\''.$result->band_name.'\',\''.$box.'\');">'.$result->band_name.'</li>';
                    }
                } else {
                    echo 'ERROR: There was a problem with the query.';
                }
        } else {
            // Dont do anything.
        } // There is a queryString.
    } else {
        echo 'There should be no direct access to this script!';
    }
}

我的問題可能與javascript中的post調用有關,但我更傾向於將我不正確地將變量變量名稱作為id標簽處理。

您的字符串已損壞,請嘗試以下操作:

echo "<div><input type=text name='$set_b' size=25 id='$set_b' onkeyup=\"bandlookup(this.value,'$set_b');\" onblur='bandfill();'></div>";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM