userValue というグローバル変数があります。ページが読み込まれると、この値は選択されたオプションを見つけて、そのオプション値を保存します。オプションが無効になっているため、ロード時にデフォルトまたはnullが保存されます。ただし、onchange (より多くのオプションがサイトごとに動的に入力されます) では、選択したオプションの値をグローバルに保存しようとしているので、単純に変数 userValue を再利用し続けることができます。以下を含めると、以下のものが適切に機能します。
userValue = $('#my_SiteUsers').find(':selected').val();
RefreshGroupList() 関数で、しかし、私がそれをしなければならない場合、それはグローバル変数を持つ目的を無効にしませんか? 現在、変更を加えると「デフォルト」が返されます
HTML:
<select id="my_SiteUsers" style="width:200px;" onchange="RefreshGroupLists()">
<option value='default' disabled="disabled">Select a user</option>
</select>
JS:
var user, userValue, userText, group, strHTMLSiteUsers, strHTMLSiteGroups, strHTMLAvailable, strHTMLAssigned, arrOptionsAssigned, arrGroups, arrUsers, intOpts, booMatch, booErr;
$(document).ready(function(){
user = $('#m
y_SiteUsers');
userValue = $('#my_SiteUsers').find(':selected').val();
userText = $('#my_SiteUsers').find(':selected').text();
group = $('#my_SiteGroups');
groupsAssigned = $("#my_SPGroupsAssigned").html("");
groupAvailable = $("#my_SPGroupsAvailable").html("");
userAssigned = $("#my_SPUsersAssigned").html("");
userAvailable = $("#my_SPUsersAvailable").html("");
$("button").click(function() { return false; });
populateUsers();
populateGroups();
});
function RefreshGroupLists(){
//Populate the Groups Assigned
$().SPServices({
operation: "GetGroupCollectionFromUser",
userLoginName: userValue,
async: true,
completefunc: function(xData, Status) {
$(xData.responseXML).find("errorstring").each(function() {
alert("User not found");
booErr = "true";
return;
});
$(xData.responseXML).find("Group").each(function() {
strHTMLAvailable += "<option value='" + $(this).attr("Name") + "'>" + $(this).attr("Name") + "</option>";
arrOptionsAssigned[intOpts] = $(this).attr("Name");
intOpts = intOpts + 1;
});
groupsAssigned.append(strHTMLAvailable);
}
});
}