Jquery HTML获取选择选项的名称

Jquery HTML获取选择选项的名称,jquery,html,forms,Jquery,Html,Forms,我想获得选择选项的名称,但它似乎是空白的,用代码笔演示。但是获取值是有效的,所以我希望以相同的方式获取名称 如您所见,每个选项的名称都不同,因此无法将其添加到中,我希望避免使用数据,因为这需要将此边缘案例硬编码为可重用函数 也许你有点困惑。名称属性可以存在于选择标记中 如果您想知道选择了哪个选项,则必须侦听select元素的更改事件并获取VALUETTRIBUE 或者你可以试着做一些类似的事情,但你必须始终倾听变化事件。这是一个非常奇怪的问题,但我不会为此抱怨。 以下是你如何用一种非常棒的方式来

我想获得选择选项的名称,但它似乎是空白的,用代码笔演示。但是获取值是有效的,所以我希望以相同的方式获取名称

如您所见,每个选项的名称都不同,因此无法将其添加到中,我希望避免使用数据,因为这需要将此边缘案例硬编码为可重用函数


也许你有点困惑。名称属性可以存在于选择标记中

如果您想知道选择了哪个选项,则必须侦听select元素的更改事件并获取VALUETTRIBUE


或者你可以试着做一些类似的事情,但你必须始终倾听变化事件。

这是一个非常奇怪的问题,但我不会为此抱怨。 以下是你如何用一种非常棒的方式来做:

function parseInputs(jqElem, selector = ':input', payload = '') {
  payload ="";
  $(jqElem).find(selector).each(function () {
      input = $(this);
      payload += "&"
                + $(this).find("option[value=\"" + input.val() + "\"]").attr("name") //just a heads up, if there is more than one with the same value, this won't work...
                + "=" + 
                input.val();
  });
  return payload;
}

$('#asdf').on('click', () => {
  console.log(parseInputs('#wtf'));
});

$input.find:selected将为您获取所选选项,从中可以使用val和attr获取值

    function parseInputs(jqElem, selector = ':input', payload = '') {
      for (let input of $(jqElem).find(selector)) {
        const value = $(input).find(":selected").val();
        const name = $(input).find(":selected").attr("name");
        if (!value) {
          continue
        }
        payload += `&${name}=${value}`;
      }
      return payload.substring(1);
   }

这可能会把你的html表单搞得一团糟。选项通常没有名称组件。您能解释一下您试图在选项上使用名称做什么吗?@haxxxton backend通过拆分at字符并读取每个组件来解析名称。如果第一个组件不是,那么它执行SQL not查询,等等。还有其他类似的查询修饰符,这只是一个示例。您可以利用value属性吗?或者你需要它做别的什么?或者,如果您必须使用name,您可能需要一个js解决方案来创建一个隐藏的输入,该输入的名称是为您所追求的内容动态创建的,因为您当前的解决方案将导致您的冲突。我不确定这是否是最好的解决方案,我也不确定为什么有人在没有评论的情况下否决了你,但它至少值得投票,因为它是有效的。我也不认为这是最好的解决方案,但这种功能在本机HTML中确实不存在。对不起,伙计;我希望你能找到更好的解决办法。很抱歉。但这是个奇怪的问题。请看电视。选项没有名称属性。如果你想做这样的事情,正确的方法之一就是使用数据集。是的,我知道,这就是我在问题中所说的避免使用数据的方法——我说了为什么。事件侦听器对此似乎太多了。你没什么可道歉的。但是,认为这比其他两个答案更值得关注的三位选民需要检查他们的大脑。谢谢。这仍然需要对可重用函数进行一些硬编码,但这可能是我在当前规范中得到的最好的代码。一个问题:为什么要使用const?我用let尝试了一下,它似乎很管用,但有没有理由不使用它呢?你可以使用let、var或const,一切都会管用的。但是考虑到值和名称在该范围内可能不会改变,将它们设置为常量是最好的方法,无论是从技术上还是从人的角度。
    function parseInputs(jqElem, selector = ':input', payload = '') {
      for (let input of $(jqElem).find(selector)) {
        const value = $(input).find(":selected").val();
        const name = $(input).find(":selected").attr("name");
        if (!value) {
          continue
        }
        payload += `&${name}=${value}`;
      }
      return payload.substring(1);
   }