【问题标题】:Show price based on value from select menu根据选择菜单中的值显示价格
【发布时间】:2014-01-15 17:53:00
【问题描述】:

这是我的表单 HTML 代码。

<form>
<select id="country1">
  <option value="United States">United States</option>
  <option value="United Kingdom">United Kingdom</option>
  <option value="Germany">Germany</option>
  <option value="Canada">Canada</option>
</select>
<input name="amount1" value="" readonly="readonly" />

<select id="country2">
  <option value="United States">United States</option>
  <option value="United Kingdom">United Kingdom</option>
  <option value="Germany">Germany</option>
  <option value="Canada">Canada</option>
  <option value="France">France</option>
</select>
<input name="amount2" value="" readonly="readonly" />

<select id="country3">
  <option value="United States">United States</option>
  <option value="United Kingdom">United Kingdom</option>
  <option value="Germany">Germany</option>
  <option value="Canada">Canada</option>
  <option value="Australia">Australia</option>
  <option value="India">India</option>
</select>
<input name="amount3" value="" readonly="readonly" />

</form>

现在在同一个订单页面上,我有多个产品,每个产品都有带有国家名称的选择菜单。

现在,每个国家都有不同的运费,所以我想要的是当用户选择其中任何一个国家时,在其输入框下显示其运费。

我不熟悉 JQuery,所以任何人都可以写下使这项工作的代码。我会不时在下拉菜单中添加新的国家/地区,因此在 JQuery 中添加它们也应该很容易。

非常感谢!

变化: 建议后我的 Jquery 代码:

$(function () {
    $('#country1').change(function () {
            var prices = {
            'United States':9.99,
            'United Kingdom':14,
            'India':11,
            'Germany':14
            };
        $('input[name=amount1]').val(prices);
    });
});

【问题讨论】:

  • 我们应该猜出价格隐藏在提供的 html 中的什么位置?
  • 您的答案是学习 Javascript 教程并学习它,而不是要求别人为您完成所有工作。
  • 伙计们,如果你帮不上忙,就不需要这些答案。是的,我知道我需要学习 JS,我是 PHP 开发人员,并且我正在开发需要一些 JQ 代码的项目,所以我寻求快速帮助

标签: jquery forms select input


【解决方案1】:

让我们把它分解成更小的组件,每个组件都易于研究和测试...

首先您要响应select 元素的change 事件。像这样的:

$('#country1').change(function () {
    // respond to the event here
});

您还想将值写入input 元素。像这样的:

$('input[name=amount1]').val(someValue);

现在,您还想确定 什么 该值是什么。鉴于问题中的信息,我们无法为您做到这一点。所以我假设你有或者可以创建这个逻辑。结果最终是这样的:

$('#country1').change(function () {
    var someValue;
    // some logic to determine the value
    $('input[name=amount1]').val(someValue);
});

您将为每对 selectinput 元素执行此操作。此外,您还希望在尝试绑定到它们的 change 事件之前确保元素存在(否则不会发生任何事情),因此您可以将整个事情包装在 jQuery 函数中,这样它就不会尝试执行代码直到文档的ready 事件:

$(function () {
    $('#country1').change(function () {
        var someValue;
        // some logic to determine the value
        $('input[name=amount1]').val(someValue);
    });
});

【讨论】:

  • 感谢大卫的精彩解释。您能否检查一下上面我根据您的建议创建代码的更新线程,但是当我选择一个国家名称时,我得到 [Object] 并且没有值,可能有任何建议吗?
  • @BorisZegarac:因为您将prices 创建为对象。 input 不能将其翻译成字符串。您希望在input 中实际显示什么值?这就是您在 val() 函数中设置的值。在这种情况下,您可以通过使用select 中的选定值将其作为数组引用来从对象中选择它。类似:$('input[name=amount1]').val(prices[$(this).val()]);(未经测试,但值得研究)
  • 可爱!按我的需要工作。非常感谢大卫,代表。已添加。
猜你喜欢
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-15
  • 1970-01-01
  • 2017-05-18
  • 2022-12-06
  • 1970-01-01
相关资源
最近更新 更多