jQuery,将选择值拆分为两个字符串,然后使用数组分配给两个输入

时间:2018-07-06 16:41:40

标签: jquery html

我需要拆分html select选项的值,并将拆分结果传递到两个单独的输入字段中。我曾尝试对此进行编码,但最终得到的结果并非如此。

  

有人可以帮助我了解如何将数组的值传递给每个数组   另一个数组中的元素? 这甚至使我困惑。 :(

这是我到目前为止所拥有的;

$(document).ready(function() {

  $('#media-size').change(function() {
    var selectValue = $(this).val();
    var arr = selectValue.split("x");
    var valOne = arr[0];
    var valTwo = arr[1];

      $('.media-value').each(function() {
        $(this).val(arr);
    });
  });
});

这里是我一直在研究的小提琴的链接; Click Here

任何指导将不胜感激。

关于-B。

P.s。

为澄清起见,在将此问题标记为重复之前。我正在寻找一个Jquery答案,而不是Java答案,这似乎是我在该主题上可以找到的所有东西。

2 个答案:

答案 0 :(得分:3)

实际上,您真正靠近的地方。您只需要获取迭代的index即可获取特定的arra值。

我建议您遵循each()的jQuery文档

希望获得帮助:>

$(document).ready(function() {

  $('#media-size').change(function() {
    var selectValue = $(this).val();
    var arr = selectValue.split("x");

    $('.media-value').each(function(index) {
      $(this).val(arr[index]);
    });
  });
});
input {
  margin: .5em;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="custom-select" id="media-size">
  <option value="00x00" selected>Finish Size...</option>
  <option value="594x841">A1</option>
  <option value="420x594">A2</option>
  <option value="297x420">A3</option>
  <option value="210x297">A4</option>
  <option value="148x210">A5</option>
  <option value="105x148">A6</option>
  <option value="74x105">A7</option>
  <option value="85x55">UK Business Card</option>
  <option value="85x54">UK Plastic Card</option>
  <option value="00x00">Custom Size</option>
</select>

<input type="text" class="form-control media-value" placeholder="00" aria-label="Finish size in millimetres" aria-describedby="basic-addon2">
<span>x</span>
<input type="text" class="form-control media-value" placeholder="00" aria-label="Finish size in millimetres" aria-describedby="basic-addon2">

答案 1 :(得分:1)

提供拆分逻辑的替代方法。

/*
   This logic suggests using data attributes on your options, such as...
   <option data-width="640" data-height="480">640x480</option>
 */
$(document).ready(function() {
  var $mediaSize = $('#media-size');
  var $mediaValues = $('.media-value');

  $mediaSize.change(function() {
    var $selectedOption = $mediaSize.find('option:selected');
    
    //optionally you could give each media value a class to
    //specify width or height, and filter on that, rather
    //than using eq()
    $mediaValues.eq(0).val($selectedOption.data('width'));
    $mediaValues.eq(1).val($selectedOption.data('height'));
  });
});