【问题标题】:Get value from selected optgroup and store it in Jquery variable从选定的 optgroup 中获取值并将其存储在 Jquery 变量中
【发布时间】:2014-06-03 14:52:56
【问题描述】:

这就是我想要实现的目标。我有 3 个 optgroups 选择,这 3 个选择具有相同的标签 name="DataEntered" 我需要将所选选项传递给 Jquery 变量以提交该值而不刷新表单。几乎一切正常,我只是遇到了 2 个问题。

1- 此 Jquery 函数仅在第一个选择选项组中的一个选项被选中时才取值,对其余 2 个选择不起作用,即使它们具有相同的标签名称

2- 一旦第一个选择的值被传递,我需要重置该选择,因为在第二次提交中仍然传递了第一个选择的值。

jquery函数:

DataEntered:$('select[name=DataEntered]').val()

HTML 选择:

<select  class="DropDown" Name="DataEntered">
<optgroup label="Customer Adjustment">
<option value="Agent called to make a Turn on/off">Turn on/off</option>
<option value="Agent called to make a credit Change">Credit Change</option>
<option value="Agent called to make a Temp Cred Change ">Temp Cred Change</option>
<option value="Agent called to Open New Customer">Open New Customer</option>
<option value="Agent called for other reason">Other</option>
</optgroup>

<optgroup label="Product Question">
<option value="Agent called for Question1">Question1</option>
<option value="Agent called  for Question2">Question2</option>
<option value="Agent called for Question3">Question3</option>
<option value="Agent called for Question4">Question4</option>
<option value="Agent called for Other Question">Other</option>
</optgroup>
</select>


<select  class="DropDown"  Name="DataEntered">
<optgroup label="Account Adjustment">
<option value="Acc Adj-Change PW">Change PW</option>
<option value="Acc Adj-More Credit">More Credit</option>
<option value="Acc Adj-Turn off account">Turn off account</option>
</optgroup>

<optgroup label="Product Question">
<option value="Agent called for Question1">Question1</option>
<option value="Agent called  for Question2">Question2</option>
<option value="Agent called for Question3">Question3</option>
<option value="Agent called for Question4">Question4</option>
<option value="Agent called for Other Question">Other</option>
</optgroup>
</select>


<select  class="DropDown"  Name="DataEntered">
<option value="Runner-Check item it">Check item it</option>
<option value="Runner-Check item it">Receive Work</option>
<option value="Runner-Check item it">Confirm/Ask for information</option>
<option value="Runner-Check item it">Problem</option>
<option value="Runner-Check item it">Other</option>
</select>

【问题讨论】:

  • DataEntered 现在是一个包含 3 个值的数组,因为有 3 个元素具有相同的名称。您将从 DataEntered[0] 和 DataEntered[1] 等中访问每一个。但我认为这不是一件好事。
  • 在选择元素上使用.val() 是一个常见的错误。您必须手动确定选择了哪个元素,因为浏览器将选定的元素存储到一个数组中。

标签: php jquery html


【解决方案1】:

您应该使用不同的名称(DataEntered1、DataEntered2、DataEntered3)或通过 id 示例选择它们:

DataEntered:$('#dataenterd1').val()
<select id='dataenterd1' class="DropDown"  Name="DataEntered">

【讨论】:

  • 从 3 个选择中只有一个将被选择,如果我通过 id 引用它,我如何在 var DataEntered 中获取该值。换句话说,我如何循环通过 3 个选择并查看是否被选中?
【解决方案2】:

通过赋予相同的名称,DataEntered 现在已成为一个数组。您可以像这样访问每个选择的值:

DataEntered:$('select[name=DataEntered]');
Selected1: $(DataEntered[0]).val();
Selected2: $(DataEntered[1]).val();
Selected3: $(DataEntered[2]).val();

然而,这不是一个好的设计。您应该为每个 SELECT 提供自己的名称或类或 ID。

【讨论】:

  • 每个选择都有自己的 ID 我如何通过 id 获取它?
  • DataEntered1:$('#DataEntered1').val(); DataEntered2:$('#DataEntered2').val(); DataEntered3:$('#DataEntered3').val();
  • 但最后我需要将选定的选项存储在 DataEntered 的一个变量中,并且由于总是只有 3 个选择中的一个会被选择,所以会有 2 个选择为空。我怎么知道哪个 id 是选中的并存储在 DataEntered 中?
  • 如何在有三个选择字段的情况下存储一个结果?用户可以从每个值中选择一个值,产生 3 个值。除非您隐藏或阻止用户选择多个值。您可以在每个选择上捕获 onchange 事件并捕获其值...这将存储上次更改下拉列表中最后选择的值。
【解决方案3】:

更简单的方法,可以根据需要进行尽可能多的选择:

<script type="text/javascript">
    function getSelectValues(){
        $('select[name="DataEntered"]').each(function(){
            console.log($(this).val()); // here you can manage the value however you want to
        });
    };
</script>

【讨论】:

  • 如何实现这个函数来返回 SelectedValue 并将其传递给 Varible DataEntered?
  • 你可以构建一个对象并返回它,例如:var dataArray = new Array(); 而不是 console.log 你可以使用这个:dataArray[$(this).index()] = $(this).val() 在函数的最后你可以插入return dataArray;跨度>
【解决方案4】:
    $('select').change(function () {
        var opt = $(this).find(':selected');
        var sel = opt.val();
        var og = opt.closest('optgroup').attr('label');
        alert(sel);
        alert(og);
        $(this).find(':selected').text(sel + '-' + og);
    });

【讨论】:

猜你喜欢
  • 2015-12-22
  • 1970-01-01
  • 2016-10-19
  • 1970-01-01
  • 2014-03-05
  • 1970-01-01
  • 2015-09-20
  • 1970-01-01
  • 2012-07-17
相关资源
最近更新 更多