我正在尝试从我的JavaScript代码中访问jQuery多选项,让自己非常困惑。这个简单的示例工作正常,使用逗号分隔的已检查项列表进行警报:
http://jsfiddle.net/smontanaro/d0Laxh6j/
这些值是用这个位产生的:
$('[name=offset]').val()
但我不明白它所掩盖的魔法。因此,我很难将其概括为一个更有用的例子。
考虑一个稍微不同的环境。我有一个具有这种结构的回调函数:
function respond(button) {
var form = button.form;
...
}
从HTML调用,如下所示:
<input type="button" value="Submit" onclick="respond(this); return false;">
如果我使用这样的东西:
var group = form.elements["offset"].value;
我获得的是第一个检查值。所以,我有我的按钮和它的形式。据我所知,jQuery特定的对象,只是普通的旧JavaScript对象。我如何从它们到逗号分隔的字符串(或者更好的是,字符串列表)的复选框值,如简单的jsfiddle示例产生?
答案 0 :(得分:1)
您可能打算写:DEMO
<input type="button" value="Check Selections"
onclick="alert($(':input[name=offset] :selected').map(function() { return this.value; }).get() ); return false;">
但我强烈反对内联JS。因此,您可能希望使用:
<input type="submit" value="Check Selections">
和
var values = $('select[name=offset] :selected').map(function() {
return this.value;
}).get(); //array --> add .join(',') to get list
alert( values );
参考:
答案 1 :(得分:0)
你可以试试这个:
<强> HTML 强>
<select name="offset" class="multi" multiple="multiple">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option class="all" value="all">All</option>
<option class="all" value="actual">Actual</option>
</select>
<input type="button" value="Check Selections" onclick="alert($('input[name=offset]:checked').val()); return false;">
<强> JS 强>
$('.multi').multiselect();
$(".multi").on("change", function () {
var val = $(this).map(function () {
return $(this).val();
}).get();
console.log(val);
});
以上示例将适用于变更。为了让您的情况在点击按钮上获得选择值,您可以尝试:
$('.multi').multiselect();
window.getValues = function() {
var val = $(".multi").map(function () {
return $(this).val();
}).get();
return val;
}
答案 2 :(得分:0)
dhtml部分存在一些问题,您可能需要更改您的html部分,如下所示
jsfiddle链接
`http://jsfiddle.net/d0Laxh6j/6/`
<input type="button" value="Check Selections" onclick="alert($('[name=offset]').val());">