JQuery - select val()只返回下拉列表的第一个值
JQuery - select val() only returns first value of dropdown
我有一个简单的表单摘要脚本,它返回表单中输入的所有值,并在对话框窗口中以简洁的格式显示这些值。
对于输入字段,脚本按预期工作,但对于下拉框,它不检索当前选择的值,而是检索下拉框中的第一个值。
我的HTML
<p><label> <b>*</b> Fruit </label>
<select name="fruit">
<option value="A">Apple</option>
<option value="B">Orange</option>
<option value="C">Pear</option>
</select>
</p>
JQuery如下(节选):
var summarizeForm = function (formContent) {
var summary = formContent.clone();
summary.find('select').each(function() {
$(this).replaceWith($(this).val());
});
return summary;
}
$('#dialogSummary').children('.dialog_contents')
.replaceWith(summarizeForm(formContents));
在上述情况下,无论用户选择什么,摘要返回为'A'。
我该怎么做才能使它工作?
在实践中,这应该工作,但JQuery不能复制('select')的动态状态,在这个bug中报告。
https://github.com/jquery/api.jquery.com/issues/90由于性能原因,这个错误无法解决,所以我必须用另一种方式来解决。
您可以通过单独复制selectedIndex到克隆的select来解决此限制。"
如果您只想获得选定的水果值,则需要编写大量代码:
HTML:<p><label> <b>*</b> Fruit </label>
<select name="fruit" id="fruit">
<option value="A">Apple</option>
<option value="B">Orange</option>
<option value="C">Pear</option>
</select>
</p>
<div id="dialogsummary"></div>
JavaScript: $("#fruit").change(function() {
$("#dialogsummary").text("You selected: " + $(this).val());
});
jsFiddle
线索基本上是:$(".fruit").val()
获取所选值。
如果您想使用文本(因为您正在构建摘要):$(".fruit").find(":selected").text();
如果你想要一些"通用"的东西:(not testing)
var str = "";
summary.find("select").each(function() {
str += "Value for " + $(this).prop('name') + " is " + $(this).val();
});
相关文章:
- 如何在用户返回和上一个按钮时刷新下拉列表
- 从 html.append 追加的 html 下拉列表中获取返回值
- 检测所选的下拉列表并返回其值和ID
- 使用数据库返回的数据动态填充下拉列表
- 当我从下拉列表中选择公司名称时,UpdatePanel 自动发布返回=true 并且自动完成文本框不起作用
- 代码点火器动态表单下拉列表,不返回值,而是返回 ID
- 从 Javascript 和 Java 返回的数组中填充下拉列表
- 量角器/JavaScript - 从选择下拉列表中返回字符串的函数
- Django:自动更新下拉列表会导致“form.is_valid()”返回false
- 如何根据查询返回选择 html 下拉列表
- 使用 $('#id').val() 不会返回下拉列表的选定值
- 级联下拉列表未返回值
- 如何将在新窗口中创建的新元素的数据返回到下拉列表中
- Angularjs,无法设置数据库返回json对象的下拉列表
- Jquery.val总是为下拉列表返回相同的值
- 从PHP代码返回的JSON字符串填充下拉列表
- 包括一个搜索框,该搜索框可以查看JSON并返回下拉列表
- 如何从JSON返回更新我的下拉列表
- 返回Json函数没有更新我的下拉列表
- 返回和保留选择的下拉列表函数