web-dev-qa-db-ja.com

選択値に基づいてフォーム入力フィールドを表示する方法は?

これは簡単なことで、Googleで検索する必要があります。最善を尽くしましたが、より良い解決策を見つけることができませんでした。フォームフィールドにはいくつかの入力があり、選択フィールドにはいくつかの値があります。また、「その他」の値もあります。

私が欲しいのは:

ユーザーが「その他」オプションを選択すると、「その他」を指定するテキストフィールドが表示されます。ユーザーが(「その他」以外の)別のオプションを選択すると、そのオプションを再度非表示にします。 JQueryを使用してどのように実行できますか?

これは私のJSPコードです

<label for="db">Choose type</label>
<select name="dbType" id=dbType">
   <option>Choose Database Type</option>
   <option value="Oracle">Oracle</option>
   <option value="mssql">MS SQL</option>
   <option value="mysql">MySQL</option>
   <option value="other">Other</option>
</select>

<div id="otherType" style="display:none;">
  <label for="specify">Specify</label>
  <input type="text" name="specify" placeholder="Specify Databse Type"/>
</div>

次に、ユーザーが[その他]を選択した場合にのみ、DIVタグ**(id = "otherType")**を表示します。 JQueryを試してみたい。これは私が試したコードです

<script type="text/javascript"
    src="jquery-ui-1.10.0/tests/jquery-1.9.0.js"></script>
<script src="jquery-ui-1.10.0/ui/jquery-ui.js"></script>
<script>    
$('#dbType').change(function(){

   selection = $('this').value();
   switch(selection)
   {
       case 'other':
           $('#otherType').show();
           break;
       case 'default':
           $('#otherType').hide();
           break;
   }
});
</script>

しかし、私はこれを得ることができません。私は何をすべきか?ありがとう

16
iCode

コードにはいくつかの問題があります。

  1. select要素のidに開いている引用符がないため、_<select name="dbType" id=dbType">_

_<select name="dbType" id="dbType">_である必要があります

  1. $('this')$(this)でなければなりません:括弧内に引用符は必要ありません。

  2. オプションの値を取得する場合は、.value()の代わりに.val()を使用します

  3. 「選択」を初期化するときは、関数の最初に既に行っていない限り、その前に変数を付けてそれを行います

これを試して:

_   $('#dbType').on('change',function(){
        if( $(this).val()==="other"){
        $("#otherType").show()
        }
        else{
        $("#otherType").hide()
        }
    });
_

http://jsfiddle.net/ks6cv/

[〜#〜] update [〜#〜]スイッチで使用する場合:

_$('#dbType').on('change',function(){
     var selection = $(this).val();
    switch(selection){
    case "other":
    $("#otherType").show()
   break;
    default:
    $("#otherType").hide()
    }
});
_

[〜#〜] update [〜#〜]jQueryおよびjQuery-UIへのリンク:

_<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script>‌​
_
33
DVM

JSFiddleのデモ

$(document).ready(function () {
    toggleFields(); // call this first so we start out with the correct visibility depending on the selected form values
    // this will call our toggleFields function every time the selection value of our other field changes
    $("#dbType").change(function () {
        toggleFields();
    });

});
// this toggles the visibility of other server
function toggleFields() {
    if ($("#dbType").val() === "other")
        $("#otherServer").show();
    else
        $("#otherServer").hide();
}

HTML:

    <p>Choose type</p>
    <p>Server:
        <select id="dbType" name="dbType">
          <option>Choose Database Type</option>
          <option value="Oracle">Oracle</option>
          <option value="mssql">MS SQL</option>
          <option value="mysql">MySQL</option>
          <option value="other">Other</option>
        </select>
    </p>
    <div id="otherServer">
        <p>Server:
            <input type="text" name="server_name" />
        </p>
        <p>Port:
            <input type="text" name="port_no" />
        </p>
    </div>
    <p align="center">
        <input type="submit" value="Submit!" />
    </p>
5
Editor

val()の代わりにvalue()を使用する必要があり、開始引用符id=dbType"id="dbType"

ライブデモ

変更

selection = $('this').value();

To

selection = $(this).val();

または

selection = this.value;
2
Adil

私はその答えを得ました。ここに私のコードがあります

<label for="db">Choose type</label>
<select name="dbType" id=dbType">
   <option>Choose Database Type</option>
   <option value="Oracle">Oracle</option>
   <option value="mssql">MS SQL</option>
   <option value="mysql">MySQL</option>
   <option value="other">Other</option>
</select>

<div id="other" class="selectDBType" style="display:none;">
<label for="specify">Specify</label>
<input type="text" name="specify" placeholder="Specify Databse Type"/>
</div>

そして私のスクリプトは

$(function() {

        $('#dbType').change(function() {
            $('.selectDBType').slideUp("slow");
            $('#' + $(this).val()).slideDown("slow");
        });
    });
1
iCode
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script>
function myfun(){
$(document).ready(function(){

    $("#select").click(
    function(){
    var data=$("#select").val();
        $("#disp").val(data);
                     });
});
}
</script>
</head>
<body>

<p>id <input type="text" name="user" id="disp"></p>

<select id="select" onclick="myfun()">
<option name="1"value="1">first</option>
<option name="2"value="2">second</option>
</select>

</body>
</html>
0
Ganesh Nagare
$('#dbType').change(function(){

   var selection = $(this).val();
   if(selection == 'other')
   {
      $('#otherType').show();
   }
   else
   {
      $('#otherType').hide();
   } 

});
0
Devang Rathod