如何根据从下拉菜单中选择的项目设置范围

时间:2019-07-09 16:12:44

标签: javascript jquery html input drop-down-menu

我正在尝试在我的网站上创建一项功能,以限制用户输入超出设定范围的数字。首先,用户从下拉菜单中选择一个项目。接下来,他们在一个输入框中输入一个数字,该数字有限制(例如:最小值为-1000,最大值为1000)。

我知道我可以在输入字段中设置限制,但是由于下拉菜单中的每个项目都有不同的限制集,因此我不知道如何设置88个不同的限制。

<div>
 <select onChange="dropdownTip(this.value)" class="chosen" name="search_type" style="margin-right:10px; margin-top:2px;"> <!--bug-check-->
  <option selected="selected" value="" disabled select>Choose Compound</option>
  <option>Acetone</option>
  <option>Acetic acid</option>
  <option>Acetonitrile</option>
  <option>Benzene</option>
  <option>iso-Butane</option>
 </select>
</div>

<script type="text/javascript">
 $(".chosen").chosen();
</script>

<script>
var item = {
       "Acetone": {"box":"14.3145","box1":"2756.22","box2":"228.060"},
       "Acetic acid": {"box":"15.0717","box1":"3580.80","box2":"224.650"},
       "Acetonitrile": {"box":"14.8950","box1":"3413.80","box2":"250.523"},
       "Benzene": {"box":"13.7819","box1":"2726.81","box2":"317.572"},
       "iso-Butane": {"box":"13.8254","box1":"2181.79","box2":"248.870"},
}

function dropdownTip(element) {
      if (element) {
      console.log(item[element]['box'],item[element]['box1'],item[element]['box2']);
        document.getElementById("myBox").value=item[element]['box'];
        document.getElementById("myBox1").value=item[element]['box1'];
        document.getElementById("myBox2").value=item[element]['box2'];
      }
 }

 dropdownTip("Acetone")
 dropdownTip("Acetic acid")
 dropdownTip("Acetonitrile")
 dropdownTip("Benzene")
 dropdownTip("iso-Butane")
</script>

<br>

<form id="antoine-input" class="form-horizontal my-form" method="POST" onsubmit="event.preventDefault(); return csProcess()">
 <div class="form-group">
  <div class="col-sm-12">
    <div class="form-group">

      <div id="cs-parameters">
        <label id="cs-parameters-label">Parameters for Antoine Equation</label>
      </div>

      <div class="col-sm-4 text-center">
        <label id="cs-a-label" class="control-label">A</label>
        <input type="text" id="myBox" class="form-control" name="cs_a" onkeypress="return positiveDecimal(event)"/><br>
      </div>

      <div class="col-sm-4 text-center">
        <label id="cs-b-label" class="control-label">B</label>
        <input type="text" id="myBox1" class="form-control" name="cs_b" onkeypress="return positiveDecimal(event)"/><br>
      </div>

      <div class="col-sm-4 text-center">
        <label id="cs-c-label" class="control-label">C</label>
        <input type="text" id="myBox2" class="form-control" name="cs_c" onkeypress="return positiveDecimal(event)"/><br>
      </div>

      <div class="col-sm-4 text-center"> //this is the input field I am concerned about
        <label id="cs-tc-label" class="control-label">Temperature (ºC)</label>
        <input type="text" id="myBox3" class="form-control" name="cs_temp" onkeypress="return negativeDecimal(event)"/><br>
      </div>
     </div>
    </div>
   </form>

实际上,下拉菜单上还有83个元素,但我决定不包括所有元素。

1 个答案:

答案 0 :(得分:0)

这是我评论的一个简单例子。

首先,您需要在选择选项上设置自己的属性。使用jQuery,您只需在change上抓住这些选项,并将它们设置为输入的min和max属性。

更改仅限于input, textarea, and select个元素,并且在“更改”值时触发。 https://api.jquery.com/change/

这对于用户使用键盘“输入”其值并不十分理想,因为您不能限制实际的类型,但是它确实适用于增量和减量按钮。当然,需要对输入进行验证。

$('select').change(function() {
  var myInput = $('.ranger');
  var getMin = $(this).find(':selected').attr('data-min');
  var getMax = $(this).find(':selected').attr('data-max');

  myInput.attr({
    'max': getMax,
    'min': getMin
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select>
  <option data-min="1" data-max="5">one</option>
  <option data-min="5" data-max="10">two</option>
  <option data-min="10" data-max="20">three</option>
</select>
<input class="ranger" type="number">