2016-06-15 7 views
0

私は昨日同様の質問をしましたが、それ以来解決策が出てこなかったので、もっと妥当と思われるロジックに少し行きました働く しかし、それはしませんでした。 どのオプションが事前選択されているかに応じて、ユーザーが利用できるコンボボックスには2つのオプションしかありません。例えば選択されたものに基づいてコンボボックスのオプションを制限する

<SELECT class=caixas id=cbostatus style="WIDTH: 3cm;" tabIndex=25 name=cbostatus onchange= "StatusTest(); hideField();" > 
          <option selected></option> 
          <option value="Planned" id="optionPlanned" <?php if ($row['task_status']=='Planned') echo 'selected="selected"';?>>Planned</option> 
          <option value="Started" id="Started" <?php if ($row['task_status']=='Started') echo 'selected="selected"';?>>Started</option> 
          <option value="Available" id="Available" <?php if ($row['task_status']=='Available') echo 'selected="selected"';?>>Available</option> 
          <option value="Finished" id="Finished" <?php if ($row['task_status']=='Finished') echo 'selected="selected"';?>>Finished</option> 
          <option value="Impeded" id="Impeded" <?php if ($row['task_status']=='Impeded') echo 'selected="selected"';?>>Impeded</option> 
         </SELECT> 

、選択されたときに、「計画」、唯一の他の利用可能なオプションは、「開始」する必要があります。ここではコンボボックスです。そこで、私は行って、OnchangeイベントのためにJavaScriptを作った。そういうわけで。

function hideField(){ 
var e = document.getElementById("cbostatus"); 
var strUser = e.options[e.selectedIndex].value; 

if(strUser == 'Planned') { 
    document.getElementById("Impeded").style.display = 'none'; 
    document.getElementById("Available").style.display = 'none'; 
    document.getElementById("Finished").style.display = 'none'; 
} 
} 

何らかの理由で間違っている。何か案は? (これまでに使ったことがないので、これを学ぶ時間がないので、Jqueryの使用を提案していないのであれば事前に回答しておきます)

+0

を作成することです

$(document).ready(function() { insertoption += "<option value='Planned' id='Planned'>Planned</option>"; insertoption += "<option value='Started' id='Started'>Started</option>"; insertoption += "<option value='Available' id='Available'>Available</option>"; insertoption += "<option value='Finished' id='Finished'>Finished</option>"; insertoption += "<option value='Impeded' id='Impeded'>Impeded</option>"; $("#cbostatus").append(insertoption); insertoption = ""; }); 

レディ機能のオプションを追加直ちに変更を選択して変更の新しいオプションを表示するか、選択を一度だけ作成して使用しますか? – Adder

+0

は一度だけ作成されて使用され、他のオプションはフォームを送信した後に表示されます – RazorFinger

+0

空の選択から始め、オプションを動的に追加することをお勧めします。私は普通のjavascriptでそれを行うためのコードを持っていない。 – Adder

答えて

0

空のセレクトから始め、オプションを動的に

var e=document.getElementById("cbostatus"); 
var strUser = 'Planned'; // get this value from somewhere, maybe a hidden field 
if(strUser == 'Planned') { 
    e.options[e.length]=new Option("Planned", "optionPlanned", true, true); 
    e.options[e.length]=new Option("Started", "Started"); 
} else if .. 
+0

ちょうど質問、2行目、strUserを 'Planned'として定義します。その他の値はどうしますか?私はvarを再宣言しなければならないのですか? – RazorFinger

+0

ああ、私はそれを得る、あなたは隠されたテキストボックスまたは何かを作成し、そこにこの値を入れて、私は今参照してください – RazorFinger

0

このコードを使用してください。

Html 
<select class=caixas id=cbostatus style="WIDTH: 3cm;" tabIndex=25 name=cbostatus> 
    <option selected></option> 
</select> 

jQuery 
var insertoption = ""; 

最初のこれはあなたのオプション

を作成し、今私は、計画から開始に行けば、意志のonchange機能

$("#cbostatus").on("change",function() 
{ 
    if($("#cbostatus").val() == "Planned") 
    { 
    $("#cbostatus").children().remove(); 
    insertoption = "<option value='Started' id='Started'>Started</option>"; 
    $("#cbostatus").append(insertoption); 
    } 
}); 
関連する問題