【问题标题】:populate and disable text field depending on dropdown根据下拉列表填充和禁用文本字段
【发布时间】:2013-07-31 10:35:34
【问题描述】:

不幸的是,我对 javascript/jQuery 不太熟悉。我有一个带有下拉菜单的表单。我需要做的是根据下拉列表的选择填充文本字段。下拉菜单的第一个声音是“其他”,因此文本字段必须是可写的,然后从第二个开始我想自动分配一个值并禁用文本字段。

下拉列表的值将保存在数据库中,因此它必须保留选项的名称。

我在谷歌上找到了几个解决方案,但没有一个适合我的需求...希望有人可以帮助我。

【问题讨论】:

  • 请向我们展示您已经拥有的标记以及您尝试过的脚本替代方案。我们真的不是来为您工作的,只是在您遇到困难时伸出援助之手。

标签: javascript jquery html drop-down-menu


【解决方案1】:

要创建您正在寻找的功能,您需要学习一些基本知识。

jQuery 选择器

首先,如果您还不熟悉 jQuery 的选择器语法,learn about it here。

.change() 事件

接下来,您需要知道如何绑定到下拉菜单的.change 事件。一种方法是$('#dropdownId').change(function() { ... });,它只是$('#dropdownId').on('change', function() { ... }); 的快捷方式。在回调函数中,您可以使用this 访问下拉元素,从而使用$(this) 访问jQuery 对象。

然后我们可以使用 $(this).val() 获取下拉列表的值,并使用一些基本逻辑来启用/禁用文本框并设置其值。

启用/禁用文本框

为了启用/禁用文本框,您可以使用:$('#txt').removeAttr('disabled');and$('#txt').attr('disabled', 'true ');` 分别。

示例
我已经在一个示例小提琴中为您组合了所有这些,以向您展示如何将这些放在jsFiddle 中。如果您对它的工作原理有任何疑问,请告诉我:)

【讨论】:

  • 好的,非常感谢!对于我必须做的事情,我最终编辑了您的代码,如下所示:$('#txt').val(); 然后我需要为每个下拉元素执行else if ( $(this).val() == "opt1") { $('#txt').attr('disabled', 'true').val(2); },因为我需要为每个声音指定一个“价格”。这样正确吗?
  • 对每个选项使用elseif 有点麻烦。做我认为你要做的最简单的方法是简单地向选项添加一个值属性,因为'.val()'旨在首先检索value属性,然后仅在以下情况下使用innerHTML有值属性,您甚至不必更改 javascript :) 这是更新的 jsFiddle 。让我知道这是否是您正在寻找的以及是否有意义..
【解决方案2】:

这是给你的小提琴......

http://jsfiddle.net/G3V3v

HTML:

<select id="ddl">
    <option value="0">[ Other ]</option>
    <option value="1">First</option>
    <option value="2">Second</option>
</select>
<input id="txt" />

jQuery:

$('#ddl').change(function() {
    if ($(this).val() == 0) {
        $('#txt').val('').removeAttr("disabled").focus();
    } else {
        $('#txt').val($(this).children('option:selected').text());
        $('#txt').attr("disabled", "disabled");
    }
});

【讨论】:

  • 如果你使用jquery 1.9+,你必须禁用带有prop的文本框,而不是添加/删除disabled属性:$("#txt").prop("disabled", true); //disable
  • @kpull1 谢谢。是的当然。从 v1.4 时代起,我的机器上就有这段代码!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 1970-01-01
相关资源
最近更新 更多