jQuery 如何根据选择值显示表单输入字段?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15566999/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 15:20:27  来源:igfitidea点击:

How to show form input fields based on select value?

javascriptjqueryhtmljsp

提问by iCode

I know this is simple, and I need to search in Google. I tried my best and I could not find a better solution. I have a form field, which takes some input and a select field, which has some values. It also has "Other" value.

我知道这很简单,我需要在 Google 中搜索。我尽力了,但找不到更好的解决方案。我有一个表单字段,它需要一些输入和一个选择字段,它有一些值。它还具有“其他”值。

What I want is:

我想要的是:

If the user selects the 'Other' option, a text field to specify that 'Other' should be displayed. When a user selects another option (than 'Other') I want to hide it again. How can I perform that using JQuery?

如果用户选择“其他”选项,则应显示指定“其他”的文本字段。当用户选择另一个选项(而不是“其他”)时,我想再次隐藏它。如何使用 JQuery 执行该操作?

This is my JSP code

这是我的 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>

Now I want to show the DIV tag**(id="otherType")** only when the user selects Other. I want to try JQuery. This is the code I tried

现在我只想在用户选择其他时显示 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>

But I am not able to get this. What should I do? Thanks

但我无法得到这个。我该怎么办?谢谢

回答by DVM

You have a few issues with your code:

您的代码有几个问题:

  1. you are missing an open quote on the id of the select element, so: <select name="dbType" id=dbType">
  1. 您在 select 元素的 id 上缺少一个开放引号,因此: <select name="dbType" id=dbType">

should be <select name="dbType" id="dbType">

应该 <select name="dbType" id="dbType">

  1. $('this')should be $(this): there is no need for the quotes inside the paranthesis.

  2. use .val() instead of .value() when you want to retrieve the value of an option

  3. when u initialize "selection" do it with a var in front of it, unless you already have done it at the beggining of the function

  1. $('this')应该是$(this):括号内不需要引号。

  2. 当您想要检索选项的值时,请使用 .val() 而不是 .value()

  3. 当你初始化“选择”时,在它前面加上一个变量,除非你已经在函数开始时完成了

try this:

尝试这个:

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

http://jsfiddle.net/ks6cv/

http://jsfiddle.net/ks6cv/

UPDATEfor use with switch:

更新与开关一起使用:

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

UPDATEwith links for jQuery and jQuery-UI:

更新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>??

回答by Editor

Demo on JSFiddle

在 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:

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>

回答by Adil

You have to use val()instead of value()and you have missed starting quote id=dbType"should be id="dbType"

你必须使用val()而不是value()你错过了起始报价 id=dbType"应该是id="dbType"

Live Demo

现场演示

Change

改变

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

To

selection = $(this).val();

or

或者

selection = this.value;

回答by iCode

I got its answer. Here is my code

我得到了它的答案。这是我的代码

<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>

And my script is

我的脚本是

$(function() {

        $('#dbType').change(function() {
            $('.selectDBType').slideUp("slow");
            $('#' + $(this).val()).slideDown("slow");
        });
    });

回答by Ganesh Nagare

<!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>

回答by Devang Rathod

$('#dbType').change(function(){

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

});