我试图获取select字段的值,但.val()似乎不起作用。
我通过使用开始获取选择字段并以。结束。
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
当我尝试手动输入返回字段的ID时:
s_day = $("#form-widgets-IEventBasic-start-day");
console.log(s_day.val());
它返回月中的某天(整数)。
如何使用我使用的方法获取选择框的val?
我有理由这样做。某些表单与开始/结束字段具有“接口”,字段ID与模式选择匹配[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());
}
这也会正确返回月中的某天。
但我不确定我是否应该这样做。
答案 0 :(得分:1)
通过索引访问jQuery对象返回底层DOM元素,因此&#39; val不是函数&#39;错误。
如果您想要检索找到的第一个元素,请使用first()
或:first
,如下所示:
var s_day = $('select[id^="form-widgets"][id$="start-day"]:first').val();
console.log(s_day);
&#13;
<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>
&#13;