javascript
  • php
  • mysql
  • 2013-11-24 30 views 0 likes 
    0
    $MethodLocationFrom =mysql_query(" 
        SELECT DISTINCT Location_From AS 'locationFrom' 
        FROM trip 
    "); 
        echo "<form action='confirmation.php' method='post'>"; 
        echo "<select class = 'LocationFrom' size='1' name='locationFrom' id='locationFrom'>"; 
        while($check = mysql_fetch_array($MethodLocationFrom)) 
    { 
    echo "<option value='" . $check['locationFrom'] . "'>" . $check['locationFrom'] . "</option>"; 
    } 
    echo"</select>"; 
    
    $MethodLocationTo =mysql_query(" 
        SELECT DISTINCT Location_To AS 'locationTo' 
        FROM trip 
    "); 
        echo "<select class = 'LocationTo' size='1' size='1' name='locationTo' id='locationTo'>"; 
        while($check = mysql_fetch_array($MethodLocationTo)) 
    { 
        echo "<option value='" . $check['locationTo'] . "'>" . $check['locationTo'] . "</option>"; 
    } 
    echo"</select>"; 
    

    output of the code自動變化選項的值/ MYSQL

    嗨,大家好!我正在制定航天飛機預訂系統,我遇到了選項框問題,我想要做的是當我從位置(從第一個選項框)中選擇一個位置時,該位置將自動在我想要的位置移除去(第二個箱子)我該怎麼做?被(減少簡潔)

    回答

    0

    好吧,讓我一展身手,與個人的扭曲

    假設迭代的結果

    <select id="locationFrom"> 
        ... 
        <option value="$from">($from)</option> 
    </select> 
    <select id="locationTo"> 
        ... 
        <option value="$to">($to)</option> 
    </select> 
    

    我認爲每個選項設定的值是相同。

    讓我們用javascript來弄髒。請注意,這段時間很長,沒有任何評論,請查看它,測試它並在發現錯誤時給我反饋。

    // script.js 
    (function(){ 
        var selectFrom, selectTo, unsetChild, nextSibling, 
        onSelect, removeOption, recoverOption, 
        loadWin, unloadWin; 
        onSelect = function() { 
        var idx = this.selectedIndex; 
        if (idx !== -1) { 
         if (unsetChild) {recoverOption();} 
         removeOption(this.options[idx].value); 
        } 
        }; 
        removeOption = function (value) { 
        unsetChild = selectTo.querySelector('[value="'+value+'"]'); 
        nextSibling = unsetChild.nextSibling; 
        selectTo.removeChild(unsetChild); 
        }; 
        recoverOption = function() { 
        nextSibling 
         ? selectTo.insertBefore(unsetChild,nextSibling) 
         : selectTo.appendChild(unsetChild); 
        nextSibling = unsetChild = null; 
        }; 
        loadWin = function() { 
        selectFrom = document.getElementById('locationFrom'); 
        selectTo = document.getElementById('locationTo'); 
        selectFrom.addEventListener('change',onSelect,false); 
        }; 
        unloadWin = function() { 
        selectFrom.removeEventListener('change',onSelect,false); 
        selectFrom = selectTo = nextSibling = unsetChild = null; 
        }; 
        window.addEventListener('load',loadWin,false); 
        window.addEventListener('unload',unloadWin,false); 
    }); 
    
    0

    我已經制定了一個jQuery的解決方案(在谷歌瀏覽器測試):

    <html> 
    <head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
    <script type="text/javascript"> 
    function jqyHideSelectedOption(objSelect) { 
        var strIDSeleted = objSelect.id; 
        var strID2Handle; 
        if(strIDSeleted == "locationFrom") 
        { 
        strID2Handle = "#locationTo"; 
        } 
        else 
        { 
        strID2Handle = "#locationFrom"; 
        } 
        strIDSeleted = "#" + strIDSeleted; 
        // 
        // show all options: ie, restore default settings. 
        // 
        jQuery(strIDSeleted + " option").show(); 
        jQuery(strID2Handle + " option").show(); 
        // 
        // hide some options in the corresponding select: 
        // 
        var selectedCity = jQuery(strIDSeleted).val(); 
        if(jQuery(strID2Handle).val() == selectedCity) { 
        jQuery(strID2Handle).val(null); 
        } 
        jQuery(strID2Handle + " option[value='" + selectedCity + "']").each(function() { 
        jQuery(this).hide(); 
        }); 
    } 
    </script> 
    </head> 
    <body> 
    <?php 
    // 
    //... 
    // 
    $MethodLocationFrom = mysql_query(" 
        SELECT DISTINCT Location_From AS 'locationFrom' 
        FROM trip 
    "); 
    echo "<form action='confirmation.php' method='post'>"; 
    echo "<select class = 'LocationFrom' size='1' name='locationFrom' id='locationFrom' onchange='jqyHideSelectedOption(this)'>"; 
    while($check = mysql_fetch_array($MethodLocationFrom)) 
    { 
        echo "<option value='" . $check['locationFrom'] . "'>" . $check['locationFrom'] . "</option>"; 
    } 
    echo"</select>"; 
    
    $MethodLocationTo = mysql_query(" 
        SELECT DISTINCT Location_To AS 'locationTo' 
        FROM trip 
    "); 
    echo "<select class = 'LocationTo' size='1' size='1' name='locationTo' id='locationTo' onchange='jqyHideSelectedOption(this)'>"; 
    while($check = mysql_fetch_array($MethodLocationTo)) 
    { 
        echo "<option value='" . $check['locationTo'] . "'>" . $check['locationTo'] . "</option>"; 
    } 
    echo"</select>"; 
    // 
    //... 
    // 
    ?> 
    </body> 
    </html> 
    

    對於從城市#locationFrom選擇,使用一個onchange = '(這)jqyHideSelectedOption'。 在此選擇中選擇城市時,我們將此城市名稱隱藏在#位置選擇列表中。如果我們選擇另一個城市,則隱藏城市再次顯示在目的地列表中,因此可再次用於目的地選擇。

    如果選擇了目的地,該城市將隱藏在城市列表中。

    我們不會從2選擇中刪除任何選項,而是暫時隱藏它,因爲如果選擇了另一個城市,該選項很有用,並且必須存在以供客戶選擇。

    +0

    這有效,但它只適用於最初的選項,當我更改locationTo選項框(第一個框)locationFrom選項框(第二個框)不更新,如何保持它每次更新? –

    +0

    這已經是一步了。 – jacouh

    +0

    我更新了代碼以雙向工作。 – jacouh

    相關問題