从一个下拉列表中填写一些输入

时间:2016-12-20 10:25:32

标签: javascript jquery

我有一个像这样的jsp:



0 <= abs(a % b) < abs(b)
&#13;
>>> divmod(-1, 7)
(-1, 6)
&#13;
&#13;
&#13;

我想做的是填写输入:

  • 如果选择了1 2 3选项,则在第一个输入内写入1,在第二个输入内写入2个,在最后一个输入内写入3个;
  • 如果选择4 5 6选项,则在第一个输入中写入4,在第二个输入中写入5个,在最后一个输入中写入6个;
  • 如果选择7 8 9选项,则在第一个输入内写入7,在第二个输入内写入8,在最后一个输入内写入9;

我试过这种方式,但它没有工作:https://jsfiddle.net/L1xj7uge/我想我选择了错误的下拉列表值,但我不知道如何解决。

6 个答案:

答案 0 :(得分:2)

<强> Updated fiddle

您应该在这些行的选择器中添加id符号#以引用id属性:

$("#first").val(str1);
$("#second").val(str2);
$("#last").val(str3);

而且str3的索引应该是2而不是3,所以:

var str3 = ret[3];

应该是:

var str3 = ret[2];

希望这有帮助。

$("select[name='numbers']").change(function() {
  var str = $('#numbers option:selected').text();
  var ret = str.split(" ");
  var str1 = ret[0];
  var str2 = ret[1];
  var str3 = ret[2];

  $("#first").val(str1);
  $("#second").val(str2);
  $("#last").val(str3);

}).change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="numbers" name="numbers">
  <option value="1 2 3">1 2 3</option>
  <option value="4 5 6">4 5 6</option>
  <option value="7 8 9">7 8 9</option>
</select>
<br/>
<br/>
First: <input id="first" name="first" type="text"/><br/>
Second: <input id="second" name="second" type="text"/><br/>
Last: <input id="last" name="last" type="text"/>

答案 1 :(得分:2)

您的代码中存在两个问题。首先,数组项的索引为012。你也错过了id选择器的#前缀。

另请注意,您只需检索select的val(),并通过在input元素上放置一个公共类并按索引匹配值来使逻辑更通用,如下所示:

$("select[name='numbers']").change(function() {
  var $inputs = $('input.foo');
  $('#numbers').val().split(" ").forEach(function(t, i) {
    $inputs.eq(i).val(t);
  });
}).change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="numbers" name="numbers">
  <option value="1 2 3">1 2 3</option>
  <option value="4 5 6">4 5 6</option>
  <option value="7 8 9">7 8 9</option>
</select><br/><br/> 

First: <input id="first" name="first" type="text" class="foo" /><br/> 
Second: <input id="second" name="second" type="text" class="foo" /><br/> 
Last: <input id="last" name="last" type="text" class="foo" />

答案 2 :(得分:1)

有一些拼写错误 -

  • ret[3]应为ret[2]

  • 您必须在选择器中的#firstsecond之前添加last

  • 使用.val()从选择元素中获取所选文本

&#13;
&#13;
$("#numbers").on("change", function() {
  var str = $('#numbers').val();
  var ret = str.split(" ");
  var str1 = ret[0];
  var str2 = ret[1];
  var str3 = ret[2];
  $("#first").val(str1);
  $("#second").val(str2);
  $("#last").val(str3);
}).trigger("change");
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="numbers" name="numbers">
  <option value="1 2 3">1 2 3</option>
  <option value="4 5 6">4 5 6</option>
  <option value="7 8 9">7 8 9</option>
</select>
<br/>
<br/>First:
<input id="first" name="first" type="text" />
<br/>Second:
<input id="second" name="second" type="text" />
<br/>Last:
<input id="last" name="last" type="text" />
&#13;
&#13;
&#13;

答案 3 :(得分:0)

&#13;
&#13;
$('#numbers').change(function() {
  var getoption = $('#numbers').val().toString().split(' ')
  $('#first').val(getoption[0])
  $('#second').val(getoption[1])
  $('#last').val(getoption[2])
}).change()
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="numbers" name="numbers">
        <option value="1 2 3">1 2 3</option>
        <option value="4 5 6">4 5 6</option>
        <option value="7 8 9">7 8 9</option>
     </select>
       <br/>
       <br/>
     First: <input id="first" name="first" type="text"/><br/>
     Second: <input id="second" name="second" type="text"/><br/>
     Last: <input id="last" name="last" type="text"/>
&#13;
&#13;
&#13;

试试这个

答案 4 :(得分:0)

向选择框添加更改触发器功能,并使用空格拆分选定的值,并将拆分数组元素分配给相应的文本框。

试试这个:

   <html>
    <head>
    <title>table</title>
    <script src="moment.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    </head>
    <body>
     <select id="numbers" name="numbers">
    <option value="1 2 3">1 2 3</option>
    <option value="4 5 6">4 5 6</option>
    <option value="7 8 9">7 8 9</option>
    </select>
    <br/>
    <br/>
    First: <input id="first" name="first" type="text"/><br/>
    Second: <input id="second" name="second" type="text"/><br/>
    Last: <input id="last" name="last" type="text"/>
    <script type="text/javascript">
        $(function () {
            $('#numbers').change(function(){
               var valueArr = $(this).val().split(' ');
               $('#first').val(valueArr[0]);
               $('#second').val(valueArr[1]);
               $('#last').val(valueArr[2]);
            });
        });
    </script>

    </body>
    </html>

答案 5 :(得分:0)

你几乎完成了,只是通过id在jquery元素选择中的小问题。

//see this
$("#numbers").change(function() {
    var str = $('#numbers option:selected').text();
    var ret = str.split(" ");
    var str1 = ret[0];
    var str2 = ret[1];
    var str3 = ret[2];
    $("#first").val(str1);
    $("#second").val(str2);
    $("#last").val(str3);
});