HTML获取选择选项的名称

时间:2017-03-07 00:04:02

标签: jquery html forms

我想得到name选项,但它似乎是空白的,在codepen中展示。获取value虽然有效,但我想以同样的方式获得name

正如您所看到的,name对于每个选项都有所不同,因此无法在<select>中添加,我希望避免使用data-,因为它需要对此进行硬编码将边缘情况转化为可重复使用的功能。

http://codepen.io/anon/pen/wJzQWW?editors=1010

<select>
  <option name="" value="" selected>Or</option>
  <option name="tags" value="123">And</option>
  <option name="not-tags" value="123">Not</option>
</select>

3 个答案:

答案 0 :(得分:2)

也许你有困惑。 The tag option doesn't have a name attribute。 name属性可以存在于select标记中。

如果您想知道选择了哪个选项,则必须收听change元素的select事件并获取value属性。 Look here

或许您可以尝试像dataset这样的内容,但您必须始终听取change事件。

答案 1 :(得分:1)

$(输入).find(&#34;:selected&#34;)将为您提供所选的选项,从那里您可以使用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);
   }

答案 2 :(得分:0)

这是一个非常奇怪的问题,但我不会喋喋不休。 以下是你用kickass方式做的事情:

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'));
});