我有下面的jquery代码,它返回一个ID列表,比如1|2|3|4|5|6|7|8|9等等,对于页面上的每个列表项,我还有一个名为topfriendNumber的下拉选择框。我需要从topfriendNumber下拉框中获取值,并确保我的it列表不超过它。
因此,如果下拉列表被选择为4,那么它应该只允许4个数字1|2|3|4
基于下面的代码,你能帮上忙吗?
这可能会添加到底部,因为它已经使用了下拉框中的数字
<select name="topfriendNumber" id="topfriendNumber">
<option value="3">3</option>
<option value="6" selected="selected">6</option>
<option value="9">9</option>
<option value="12">12</option>
</select>
<script>
function saveOrder() {
var serialStr = "";
$("#topfriends li").each(function (i, elm) {
serialStr += (i > 0 ? "|" : "") + $(elm).attr("friendID");
});
// alert(serialStr); //1|2|3|4|5|6|7|8|9
$('select[name=topfriendNumber]').change();
$.ajax({
url: "exampe.php/SaveListOrder",
data: '{"ids":"' + serialStr + '"}',
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8"
});
};
//changes the background colors depending on the amount selected from the dropdown list
$('select[name=topfriendNumber]').change(function () {
var val = $(this).val();
//reset style
$('ul#topfriends > li').css("background-color", "");
//apply to all LIs before value of select
$('ul#topfriends > li:lt(' + val + ')').css("background-color", "red");
}).change();
</script>发布于 2009-08-26 00:13:01
为什么不停下来,甚至不生成超出您需要的列表呢?
var needed = $('select[name=topfriendNumber]').val();
$("#topfriends li").each(function (i, elm) {
serialStr += (i > 0 ? "|" : "") + $(elm).attr("friendID");
if (i > needed) {
return false;
}
});发布于 2009-08-26 00:11:57
我建议先使用数组来存储订单:
function saveOrder() {
var serials = []; // create an empty array
$("#topfriends li").each(function (i, elm) {
serials.push( $(elm).attr("friendID") ); // add Friend ID
});
// quick way to get your old format string
// alert(serials.join("|")); //returns: 1|2|3|4|5|6|7|8|9
// assuming this is where that "number" is.
var $numberSelect = $('select[name=topfriendNumber]');
var numOfFriends = parseInt($numberSelect.val(),10); // get the value
if (serials.length<numOfFriends) numOfFriends = serials.length;
// get an array from 0, numofFriends in length.
var serialStr = serials.slice(0, numOfFriends).join("|");
// 1|2|3|4 if numOfFriends is 4.
// ....
};如果你是从一个字符串开始:
function getListItems(listStr, length) {
var parts = listStr.split("|"); // split the string up into an array.
if (!length || (parts.length<length)) return parts.join("|");
return parts.splice(0,length).join("|");
}
alert(getListItems("1|2|3|4|5|6|7|8|9", 4)); // 1|2|3|4VoteyDisciple的回答提出了一个很好的观点--你并不真的需要所有的朋友ID。
function saveOrder() {
// assuming this is where that "number" is.
var $numberSelect = $('select[name=topfriendNumber]');
var numOfFriends = parseInt($numberSelect.val(),10); // get the value
var serials = []; // create an empty array
$("#topfriends li").slice(0,numOfFriends).each(function (i, elm) {
serials.push( $(elm).attr("friendID") ); // add Friend ID
});
var serialStr = serials.join("|");
//....
}发布于 2009-08-26 00:11:01
var newSerialStr = serialStr.split('|').splice(0,topfriendNumber).join('|');https://stackoverflow.com/questions/1331644
复制相似问题