在 JavaScript 中选择匹配的动态字段

Posted

技术标签:

【中文标题】在 JavaScript 中选择匹配的动态字段【英文标题】:Selecting matching Dynamic field in JavaScript 【发布时间】:2021-06-14 10:42:22 【问题描述】:

我正在尝试在表单中选择一个单选选项,然后动态选择匹配的下拉选项。 即,如何在单选选项中选择“工作”,并在下拉列表中动态自动选择“工作”?我正在努力弄清楚如何让这段代码工作。最后,我还想在每个选项被选中时更改它的颜色。

请在此处查看小提琴链接:https://jsfiddle.net/rs26nfk1/

<div class="container"> <p>

        <div contenteditable="true" id="myContent">

<form method="POST" action="..." onsubmit="return checkForm(this);">
<label for="new-task">Add</label><input id="new-task" type="text" placeholder="Task Name..."><br>
<label for="task-descr"></label><input id="task-descr" type="text" placeholder="Task Description..."><br>
<label>Date: <input type="text" size="12" placeholder="dd/mm/yyyy" name="startdate" id="startdate">
    <!--<small>(dd/mm/yyyy)</small>-->
    </label><br>
<input id="urgent" type="checkbox"><label for="urgent">Urgent</label><br>

<input type="radio" id="groceries" name="category" value="groceries">
<label for="groceries">Groceries</label>
<input type="radio" id="work" name="category" value="work">
<label for="work">Work</label>
<input type="radio" id="chores" name="category" value="other">
<label for="chores">Chores</label>
<input type="radio" id="finance" name="category" value="other">
<label for="finance">Finance</label>

<form>
    <br>
    Select your category:
    <select id="mySelect">
      <option>Groceries</option>
      <option>Work</option>
      <option>Chores</option>
      <option>Finance</option>
    </select>
    <br><br>
    <input type="button" onclick="getOption()" value="Click Me!">
    </form>
    
    <p id="demo"></p>

</form>

<!--Task Order-->

<button input type="button" onclick="getOption()" value="Click Me!">Add</button>

</form>
</p>
<h3>To Do</h3>
<ul id="incomplete-tasks">

</ul>

<h3>Completed</h3>
<ul id="completed-tasks">


</ul></div>

</div>
<script type="text/javascript">
jQuery(document).ready(function ($) 
    $(document).on('change', 'select[name="item_meta[work]"]', function () 
        var lookup_val = $(this).val();

        $("select[name='item_meta[mySelect]'] option").filter(function () 
            return $(this).text() === lookup_val;
        ).first().prop('selected', true).siblings().prop('selected', false);

        $("select[name='item_meta[mySelect]']").trigger( type:'change', originalEvent:'custom' );
    );
);
</script>

【问题讨论】:

你可以查看jsfiddle.net/bvh6c391/1 非常感谢!这也有很大帮助。非常感谢! 似乎您使用带有选项值的单选按钮值进行检查,这些值现在已修复上述小提琴。 【参考方案1】:

您可以获取已检查的无线电值,然后使用具有该值的 find 选项并将prop('selected', true); 添加到该选项。

演示代码

//onchange of input rado
$(document).on('change', 'input[name=category]', function() 
  var lookup_val = $(this).val(); //get  val
  //add slected
  $("select#mySelect").find("option:contains(" + lookup_val + ")").prop('selected', true);
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<form method="POST" action="..." onsubmit="return checkForm(this);">
  <label for="new-task">Add</label><input id="new-task" type="text" placeholder="Task Name..."><br>
  <label for="task-descr"></label><input id="task-descr" type="text" placeholder="Task Description..."><br>
  <label>Date: <input type="text" size="12" placeholder="dd/mm/yyyy" name="startdate" id="startdate">
    <!--<small>(dd/mm/yyyy)</small>-->
    </label><br>
  <input id="urgent" type="checkbox"><label for="urgent">Urgent</label><br>

  <input type="radio" id="groceries" name="category" value="Groceries">
  <label for="groceries">Groceries</label>
  <input type="radio" id="work" name="category" value="Work">
  <label for="work">Work</label>
  <input type="radio" id="chores" name="category" value="Chores">
  <label for="chores">Chores</label>
  <input type="radio" id="finance" name="category" value="Finance">
  <label for="finance">Finance</label>

  <form>
    <br> Select your category:
    <select id="mySelect">
      <option>Groceries</option>
      <option>Work</option>
      <option>Chores</option>
      <option>Finance</option>
    </select>
    <br><br>
    <input type="button" onclick="getOption()" value="Click Me!">
  </form>

【讨论】:

非常感谢!这行得通。我非常感激。在我仍然单击添加按钮后,我无法让它显示在待办事项列表中,但我会继续尝试解决这个问题。谢谢! I can't get it show up in the To Do list after I click the add button still, but will keep trying to figure that out.. 请详细说明 :) 也会帮助你。 谢谢!单击添加按钮后,我无法将任何表单项从“添加”部分显示到“待办事项”部分。我将变量 var taskInput 用于第一个有效的变量,但将 var taskDescrInput 和 var startDateInput 等用于其他表单选项不起作用。任何帮助将不胜感激! 看到这个fiddle 我已经完成了日期和无线电输入,现在你只需要对其他做同样的事情。创建输入并从输入中获取值并将其添加到您的 dom 中。 非常感谢!对此,我真的非常感激。我试图弄清楚你是如何让它适用于日期和无线电输入的,并将尝试对其余的做同样的事情!希望我能让它工作。这可能需要我一段时间,但希望我能得到它。再次感谢您的帮助!

以上是关于在 JavaScript 中选择匹配的动态字段的主要内容,如果未能解决你的问题,请参考以下文章

Javascript - 在动态 CRM 中选择查找字段时自动填充字段

在 Codeigniter 中使用 javascript 多字段的动态选择框

根据下拉选择动态填充字段(Javascript / HTML)

根据使用 Javascript 选择的组合框动态添加表单字段

将对象中的值与HTML选择选项中的值匹配的Javascript函数?

如何在 MongoDB 中搜索动态字段并首先对最佳匹配结果进行排序