【问题标题】:Change the select option value based on input field根据输入字段更改选择选项值
【发布时间】:2016-05-17 21:38:45
【问题描述】:

我真的不知道该怎么做。是否可以执行此过程? 我想根据 quant 字段上的用户输入更改选择选项值

<input type="number" name="quant" id="quant" /> // for example I enter 2
<select name="shipment" disable>
 <option value="100"> 100 per 1 item </option>
 <option value="150"> 150 per 2 item </option> //this must be selected
</select>

我在php中的实际代码

    <select name="shipment" id="">
<?php 
foreach($shipment as $num => $price)
{
    if($num != NULL || $price !=NULL)
    {
?>              
<option value="<?php echo "{$price}"?>">
    <?php echo "{$price}"." for "."{$num}"." item";?></option>
<?php 
    }
}
?>

</select>
<h4 style="padding:0px;margin:0px;float:left;margin-top:10px;"  class="col-md-3" >Quantity: </h4>
<div class="col-md-9" style="padding-left:0px;"><input  type="number"  name="quant" onblur="multiply.call(this,this.form.elements.price.value,this.form.elements.quant.value)"
 min="1" max="10" placeholder="2" style="height:2em;margin:3px;"></div>

我必须做一个简单的计算,这是物品的价格:

<h4 style="padding:0px;margin:0px;float:left;"  class="col-md-12" >Sale Price: ₱<font color='red'><?php $price= number_format(intval($shop_item_orig_price-($shop_item_orig_price*($shop_item_sale/100)))); echo $price;?> </font> </h4>

我会根据数量乘以它

    <input  type="number"  name="quant" onblur="multiply.call(this,this.form.elements.price.value,this.form.elements.quant.value);myFunction(this.value)"
 min="1" max="10" placeholder="2" style="height:2em;margin:3px;">

然后根据所选值添加运费。

【问题讨论】:

  • 你想要什么输出?选择下拉值更改为什么?
  • 你的 PHP 在这里扮演什么角色?
  • @NanaPartykar 例如,我在输入字段中输入 2 如果我输入 1,2 项的选择选项值将为 150 1 项的选择选项值将为 100
  • @divy3993 我现在只想展示我的流程。
  • 可以显示php代码的html输出吗?

标签: javascript php html


【解决方案1】:

HTML

<input type="number" name="quant" id="quant" />
<select name="shipment" disable>
  <option value=""></option>
  <option value="100"> 100 per 1 item </option>
  <option value="150"> 150 per 4 item </option>
  <option value="150"> 150 per 5 item </option> 
  <option value="150"> 150 per 2 item </option>
  <option value="150"> 150 per 3 item </option>
</select>

JavaScript

   document.getElementById('quant').addEventListener("change", function(){
      multiply(this.form.elements.price.value,this.form.elements.quant.value);
      var value = parseInt(this.value, 10),
          selectEle = document.getElementsByTagName('select')[0],
          options = selectEle.options,
          selectedNum = 0;
      for(var i = 0; i < options.length; i++) {
        //checking the exact string with spaces (" " + value + " ")
        if(options[i].textContent.indexOf(" " + value + " ") > -1) {
            selectedNum = i;
        }
     }
     selectEle.selectedIndex = selectedNum ? selectedNum : 0;   
}, false);

【讨论】:

  • 当我选择 10 时,它不在选择选项字段中.. 选择字段必须为空...问题是它不会改变
  • 现在的问题是我的总价不再起作用了
  • 在这个事件块中使用你的乘法函数。检查更新
  • 这是我的乘法函数不知道怎么放
【解决方案2】:

我正在向您展示以下问题的简单演示:

更新

function myFunction(quantValue)
{
  var shipmentOption = document.getElementById("shipmentSelect");
  shipmentOption.selectedIndex = quantValue - 1;
}
<input  type="number" name="quant" placeholder="2" onblur="myFunction(this.value)"/>

<select name="shipment" id="shipmentSelect">
 <option value="100"> 100 per 1 item </option>
 <option value="150"> 150 per 2 item </option> //this must be selected
</select>

说明:该演示的逻辑非常简单,selectedIndex。因此,假设您的条目将是序列化选项。所以如果1输入而不是选择第一个选项,2输入选择第二个选项,....等等。

第二次更新

JSFiddle:Demo

希望对你有帮助。

【讨论】:

  • @JonasDulay 检查更新。
  • 检查脚本中的 JavaScript selectedIndex。
  • onblur="multiply.call(this,this.form.elements.price.value,this.form.elements.quant.value);myFunction(this.value)" 我有这个功能我的量化领域碰巧我的 multiply.call 不起作用
  • multiply.call(this,this.form.elements.price.value,this.form.elements.qua‌​nt.value) 在做什么?我的意思是它有什么用?
  • 在选项文本不是增量顺序中时,解决方案不起作用。 span>
【解决方案3】:

另一种选择

&lt;option&gt; 标签中创建一个属性data-quantity。赋予它 1,2,3... 的价值。并且,在&lt;script&gt; 中,使用change()keyup() 函数。

<select name="shipment" id='selectbox'>
    <option value="100" data-quantity="1"> 100 per 1 item </option>
    <option value="150" data-quantity="2"> 150 per 2 item </option> 
</select>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $('.quantity').change(function(){
            var quant= $('.quantity').val();
            $("#selectbox").find("option[data-quantity=" + quant + "]").attr('selected', 'selected').siblings().removeAttr('selected');
        });
});
</script>

【讨论】:

  • 当我选择不在选择选项字段上的 4 时,选择字段必须为空...问题是它不会改变
  • 有一个错误......如果我把 10 放在第一个没有选择值显示。但是当我选择 1 然后选择值显示然后将 quant 的值再次更改为 10 时,选择值不会更改为 null
【解决方案4】:

使用 jQuery:

$(function() {
  $('#quant').keyup(function() {
    var text = $(this).val();
    var select = $('select[name="shipment"]');
    var option = select.find(':contains(' + text + ')');
    if (option.length) {
      select.val(option.attr('value'));
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" name="quant" id="quant" />
<select name="shipment" disable>
 <option value="100"> 100 per 1 item </option>
 <option value="150"> 150 per 2 item </option>
</select>

抱歉,不知道 vanilla js 解决方案。

【讨论】:

  • 我猜 JQuery 不是 OP 想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
  • 2014-02-25
  • 1970-01-01
  • 2012-06-03
  • 1970-01-01
相关资源
最近更新 更多