【问题标题】:How to create a function in Jquery that affects the selected div如何在 Jquery 中创建影响所选 div 的函数
【发布时间】:2020-07-24 03:04:10
【问题描述】:

我的目标是为选择创建一个函数,当它改变时它会改变输入中的占位符。我已经做到了。

但我的问题是使该函数对我添加的任何新输入+选择有效。这样做是为了我不必每次都用新的 id 创建一个新函数。我需要一个只影响我点击的内容的全局函数。

(最后我添加了一个按钮来创建新表单,所以我需要全局函数来处理用户创建的任何新表单)

  • 这是 Bootstrap 中的 html 表单(我将代码简化为基本内容)
<div id="form">

  <input name="telefono" type="text" id="telefono" placeholder="Móvil">

  <select>
    <option value="Móvil">Móvil</option>
    <option value="Casa">Casa</option>
    <option value="Trabajo">Trabajo</option>
  </select>

</div>
  • 这是jQuery中的函数
$(function(){   
  $("#form").find("select").change(function(){
    $("#form").find("input").attr("placeholder", $(this).find(":selected").val());
  });
});

使用此代码,我可以更改我创建的第一个 div 表单,但不能更改新表单。

我正在为表单使用 Bootstrap。

【问题讨论】:

    标签: jquery html function select


    【解决方案1】:

    您可以使用以下代码。希望它会起作用。

    $(function(){   
      $(document).on("change", "select", function(){
            var selectedValue = $(this).find(":selected").val();
            var parent = $(this).closest("#form");
                parent.find("input").attr("placeholder",selectedValue);
      });
    });
    

    【讨论】:

      【解决方案2】:

      要让您的函数与所有动态添加的selectinput 元素一起工作,您必须将change() 事件从页面最初加载到select 元素时已经存在的父元素传递给使用on():

      $(function(){   
        $(document).on("change", "select", function(){
           $(this).prev("input").attr("placeholder", $(this).find(":selected").val());
        }); 
      });
      

      Fiddle
      jQuery on()

      【讨论】:

      • 嗨!谢谢你的回答,它有效。我只是忘记了我的每个输入和按钮都在一个 div 中。因此,当我使用此功能时,它找不到以前的输入
      • @cicb 当您添加新的输入并选择时,您是将它们添加到 id="form" 的 div 中还是将它们添加到新的 div 中?实际上,我的答案中的代码针对的是已更改选择的前一个元素的输入,也许您更改的 html 看起来不同。
      • 当我添加新输入并选择时,我将它们分别添加到一个新的 div 中,并将两个 div 都添加到另一个中。这有点奇怪,但使用 Bootstrap cols 我发现这是最好的方法。直到明天我必须再次更改它,因为我需要添加一个可排序的 ul。非常感谢您的回答,它确实有效,但目前我不确定整个项目的路径(而且我是 js 和 jquery 的新手)
      猜你喜欢
      • 2018-06-29
      • 1970-01-01
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-22
      相关资源
      最近更新 更多