我被迫利用jQuery Mobile和我有一些猶豫,即使它是一個非常良好的系統。所以,我有一個表單,當任何複選框更改時提交。客戶端需要它,以便當他們單擊頁面時等待提交一段時間,所以如果選擇了另一個頁面,則先前的請求不會被觸發,新的請求也不會被觸發。它本質上是使它不那麼即時,並允許更有效的過濾/請求。我的代碼是像這樣:多個複選框選擇與延遲檢查其他複選框更改
$(function() {
var sForm = "form[name='Waves']",
sCboxes = "input[type='checkbox']",
sWaves = "";
var $Cboxes = $(sForm + " " + sCboxes),
sChecked = sCboxes + ":checked";
$Cboxes.change(function(event) {
var $this = $(this);
if ($this.attr("id") != "ClearAll") {
console.debug($(this));
console.debug('Changing page.');
sWaves = "";
// Form the string for the selected waves with standard check-if-it's-the-last
// element logic for comma generation.
$.each($(sChecked) , function(i, v) {
var $this = $(this);
var iIndex = v.value;
sWaves += iIndex + ((i == $(sChecked).length - 1) ? "" : ",");
});
console.debug("Waves to select: " + sWaves);
$.mobile.changePage("default.asp", {
data: { Wave: sWaves }, // Submit the previously formed string
type: "post"
});
//$(sForm).submit();
} else {
$(sChecked).add($(this)).attr("checked", false).checkboxradio("refresh");
$.mobile.changePage("default.asp", {
data: { Wave: "" },
type: "post"
});
}
});
$("#ClearAll").click(function(event) {
event.preventDefault();
});
$(".slideout").click(function(){
$(this).parents(".ui-collapsible").find(".ui-icon-minus").click();
});
});
該窗體的HTML:
<form ACTION="<%=ASP_SELF()%>" ID="Waves" METHOD="post" NAME="Waves">
<% ' Put the scripts we need here so that it loads with the page. %>
<script SRC="/base/scripts/scripts.js"></script>
<fieldset DATA-ROLE="controlgroup" DATA-TYPE="horizontal" STYLE="margin-left:5px; margin-bottom:0px; ">
<input TYPE="checkbox" NAME="#" ID="#" VALUE="Select Waves" CLASS="custom" />
<label CLASS="no-hover" FOR="#"> Waves: </label>
<input TYPE="checkbox" NAME="Wave1" ID="Wave1" VALUE="1" CLASS="custom" STYLE="width:70px !important; " <% If Instr(request("Wave"),"1") OR WaveOne = "YES" Then response.write " checked=""checked""" End If %> />
<label FOR="Wave1"> 1 </label>
<input TYPE="checkbox" NAME="Wave2" ID="Wave2" VALUE="2" CLASS="custom" STYLE="width:70px !important; " <% If Instr(request("Wave"),"2") OR WaveTwo = "YES" Then response.write " checked=""checked""" End If %> />
<label FOR="Wave2"> 2 </label>
<input TYPE="checkbox" NAME="Wave3" ID="Wave3" VALUE="3" CLASS="custom" STYLE="width:70px !important; "<% If Instr(request("Wave"),"3") OR WaveThree = "YES" Then response.write " checked=""checked""" End If %> />
<label FOR="Wave3"> 3 </label>
<input TYPE="checkbox" NAME="Wave4" ID="Wave4" VALUE="4" CLASS="custom" STYLE="width:70px !important; "<% If Instr(request("Wave"),"4") OR WaveFour = "YES" Then response.write " checked=""checked""" End If %> />
<label FOR="Wave4"> 4 </label>
<input TYPE="checkbox" NAME="ClearAll" ID="ClearAll" VALUE="Clear" CLASS="custom" $('input[data-type="search"]').TRIGGER("CHANGE").VAL(""); />
<label FOR="ClearAll"> Clear </label>
</fieldset>
</form>
我需要延遲$.mobile.changePage
調用足夠長的時間,以允許其他相關的複選框(在同一字段集內)也被切換。我感謝任何輸入!這是一件非常重要的事情。
非常愛。我討厭定時器> :( – 2012-07-18 22:53:43