jQuery 选择器-> 如何获取使用 'id begins/ends with' 选择的字段的值?

jQuery Selectors-> How can I get the value of a field that was selected with 'id begins/ends with'?

我正在尝试获取 select 字段的值,但 .val() 似乎不起作用。

我通过使用开头和结尾得到 select 字段。

s_day = $("select[id ^='form-widgets'][id $='start-day']")

我打开一个表单,它找到了一个字段:

if(s_day.length > 0){
    console.log(s_day[0]);
}

console.log 输出

<select class="day date-widget required date-field" name="form.widgets.entry_start-day" id="form-widgets-entry_start-day">

当我尝试时:

console.log(s_day[0].val())

我得到:

s_day[0].val is not  a function

当我尝试手动输入 return 字段的 ID 时:

s_day = $("#form-widgets-IEventBasic-start-day");
console.log(s_day.val());

它 return 是一个月中的第几天(作为整数)。

如何使用我使用的方法获取 select 框的值?

我尝试这样做是有原因的。某些表单具有 'interfaces' 和 start/end 字段,字段 ID 匹配模式 select[id ^='form-widgets'][id $='start-day'] 还有-月、-年等。 我想针对那些更改它们的默认值。

我现在能做的是:

s_day = $('select[id ^="form-widgets"][id $="start-day"]');
if(s_day.length > 0){
    console.log($("#"+s_day[0].id).val());
}

这个 return 也是正确的月份日期。

但我不确定我是否应该那样做。

通过索引 returns 底层 DOM 元素访问 jQuery 对象,因此出现 'val is not a function' 错误。

如果要检索第一个找到的元素,请使用 first():first,如下所示:

var s_day = $('select[id^="form-widgets"][id$="start-day"]:first').val();

console.log(s_day);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<select class="day date-widget required date-field" name="form.widgets.entry_start-day" id="form-widgets-entry_start-day">
  <option value="foo">Foo</option>
</select>