我想得到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>
答案 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'));
});