2016-04-25 3 views
2

職業などのドロップダウンリストがあり、ユーザーがオプション「その他」をクリックすると、テキストボックスが表示され、ユーザーは職業を指定する必要があります。ユーザーが「その他」を選択して職業を入力する部分は入力内容を保存しますが、ユーザーがドロップダウンリストを選択または選択するときには、フォームを送信すると値が記録されません。選択オプションが値を取得しない

選択オプションの値はどのように取得されますか?ユーザーが「その他」を選択して職業を入力したときのみ値を取得するためです。ここに私のコードです。

function CheckOccupation(val){ 
 
var element=document.getElementById('occupation'); 
 
if(val=='Other') 
 
    element.style.display='block'; 
 
else 
 
    element.style.display='none'; 
 
}
<select class="form-control" name="occupation" onchange='CheckOccupation(this.value);'> 
 
\t <option> Select Occupation</option> 
 
\t <option> Lawyer </option> 
 
\t <option> Nurse </option> 
 
\t <option> Lawyer </option> 
 
\t <option> Teacher </option> 
 
\t <option> Programmer </option> 
 
\t <option> Accountant </option> 
 
\t <option> Other </option> 
 
</select> 
 

 
<input type="text" name="occupation" id="occupation" class="form-control" placeholder="please specify your occupation..." style='display:none;'/>

+0

' option'要素を有する<option>を複製削除しますか? – guest271314

+0

ところで、あなたは2つの要素に同じ名前を使用しています。これは、uは何を意味する '私も試してみました彼らに、<オプション値=「ナース」>を – Mojtaba

+0

を変更するにはナース'それでもguest271314 – James

答えて

0

私はあなたのためのplunker:Plunker link

var要素を使用しないでください。

0

<option>要素の内容が自動的にその価値はありません。 value属性を指定する必要があります。

function CheckOccupation(val){ 
 
var element=document.getElementById('occupation'); 
 
if(val=='Other') 
 
    element.style.display='block'; 
 
else 
 
    element.style.display='none'; 
 
}
<select class="form-control" name="occupation" onchange='CheckOccupation(this.value);'> 
 
\t <option> Select Occupation</option> 
 
\t <option> Lawyer </option> 
 
\t <option> Nurse </option> 
 
\t <option> Lawyer </option> 
 
\t <option> Teacher </option> 
 
\t <option> Programmer </option> 
 
\t <option> Accountant </option> 
 
\t <option value="Other"> Other </option> 
 
</select> 
 

 
<input type="text" name="occupation" id="occupation" class="form-control" placeholder="please specify your occupation..." style='display:none;'/>

+0

私は前にこれをしましたが、それでも同じです。 – James

+0

フォームの入力に入力値を含める必要があります。同じ 'name'属性を与えることはできません。 – user3297291

0

私はあなたがオプションタグ内でいくつかの値を指定する必要かもしれないと思います。これを試してみてください :

<select class="form-control" name="occupation" onchange='CheckOccupation(this.value);'> 
 
\t <option value="select"> Select Occupation</option> 
 
\t <option value="lawyer"> Lawyer </option> 
 
\t <option value="nurse"> Nurse </option> 
 
\t <option value="lawyer"> Lawyer </option> 
 
\t <option value="teacher"> Teacher </option> 
 
\t <option value="programmer"> Programmer </option> 
 
\t <option value="accountant"> Accountant </option> 
 
\t <option> Other </option> 
 
</select>

+0

私もそれをやったことがありますが、それでも私の問題は解決しませんでした。 – James

0

あなたは、両方のフィールドの名前= "職業" を設定しています。両方に異なる名前を使用してみてください。あなたのオプションフィールドのvalue属性を設定し、また、フィールド

JS

function CheckOccupation(val){ 
var element=document.getElementById('occupation'); 
if(val==='Other') 
    element.style.display='block'; 
else 
    element.style.display='none'; 
} 

HTML

<select class="form-control" name="occupation1" onchange='CheckOccupation(this.value);'> 
    <option> Select Occupation</option> 
    <option value="Lawyer"> Lawyer </option> 
    <option value="Nurse"> Nurse </option> 
    <option value="Lawyer"> Lawyer </option> 
    <option value="Teacher"> Teacher </option> 
    <option value="Programmer"> Programmer </option> 
    <option value="Accountant"> Accountant </option> 
    <option value="Other"> Other </option> 
</select> 

<input type="text" name="occupation2" id="occupation" class="form-control" placeholder="please specify your occupation..." style='display:none;'/> 
+0

さて、私はそれを試みます。 – James

+0

答えを提出いただきありがとうございます、私の問題は解決しました。私は正しい回答をした人を評価することができますが、私の特典は限られています。これはtho働いた! – James

0

これを参照してください。両方に別の名前を提供

<select class="form-control" name="occupation" onchange='CheckOccupation(this.value);'> 

<input type="text" name="occupation" id="occupation" class="form-control" placeholder="please specify your occupation..." style='display:none;'/> 
0

これは動作するはずです:

function CheckOccupation(selectedType){ 
 
    if (selectedType == 'Other'){ 
 
\t \t document.getElementById('occupation').style.display = 'block'; 
 
    
 
\t } else{ 
 
\t \t document.getElementById('occupation').style.display = 'none'; 
 
    
 
\t } 
 
}
<select class="form-control" name="occupation" onchange='CheckOccupation(this.value);'> 
 
\t <option> Select Occupation</option> 
 
\t <option value="Lawyer"> Lawyer </option> 
 
\t <option value="Nurse"> Nurse </option> 
 
\t <option value="Teacher"> Teacher </option> 
 
\t <option value="Programmer"> Programmer </option> 
 
\t <option value="Accountant"> Accountant </option> 
 
\t <option value="Other"> Other </option> 
 
</select> 
 

 
<input type="text" name="occupation_other" id="occupation" class="form-control" placeholder="please specify" style='display:none;'/>

0

問題は、あなたが選択(職業)と命名し、その後、それらは同じで送ることができませんでした

入力(職業)という名前のことです、ためeventを代入してみそれらのいずれか1

+0

答えを提出いただきありがとうございます、私の問題は解決しました。私は正しい回答をした人を評価することができますが、私の特典は限られています。 – James

0

を変更するには、名前みてくださいパラメータとしてをCheckOccupationに渡します。 value属性を含むoption要素; "other"#occupationname値を変更します。また、[値]属性が設定されていない質問で `html`で.innerHTML"Lawyer"

<script> 
 
    function CheckOccupation(event) { 
 
    var val = event.target.value; 
 
    var element = document.getElementById("occupation"); 
 
    if (val == "Other") 
 
     element.style.display = "block"; 
 
    else 
 
     element.style.display = "none"; 
 
    console.log(val) 
 
    } 
 
</script> 
 

 
<select class="form-control" name="occupation" onchange='CheckOccupation(event);'> 
 
    <option>Select Occupation</option> 
 
    <option value="Lawyer">Lawyer</option> 
 
    <option value="Nurse">Nurse</option> 
 
    <option value="Teacher">Teacher</option> 
 
    <option value="Programmer">Programmer</option> 
 
    <option value="Accountant">Accountant</option> 
 
    <option value="Other">Other</option> 
 
</select> 
 

 
<input type="text" name="other" id="occupation" class="form-control" placeholder="please specify your occupation..." style='display:none;' />

関連する問題