0
我得到了一個函數getBrandUrl(),它激發了getProducts()。getJSON如果複選框被選中然後取消選中
如果複選框被選中並且該功能被觸發(第二次,在選中的複選框上),該複選框需要被取消選中。因此,我可以構建GET請求,而不必使用該複選框的值來按品牌過濾出產品。
<input type="checkbox" name="brand[]" value="35890" onclick="javascript:getBrandUrl('35890');">
<a href="javascript:getBrandUrl('35890');" title="blabla" alt="blabla">blabla</a>
第一次點擊[href](blabla)?那麼需要檢查複選框,並可以格式化GET請求。因此,如果單擊另一個複選框或[href],它將追加到URL中,並且當它第二次單擊時,需要將其刪除。
function getBrandUrl(value)
{
getProducts("<?=$filterUrl?>", value, 'brand[]');
}
function getProducts(url, value, type)
{
if($('input[type="checkbox"][value="' + value + '"]').is(':checked')) {
$(this).attr('checked', 'false');
} else {
$(this).attr('checked', 'true');
}
var checked = '';
$('input[name="' + type + '"]:checked').each(function() {
checked += '&' + type + '=' + this.value;
});
$.getJSON(url + checked + "&json=true", function(data) {
$('#productList').html('');
$.each(data, function(key, val) {
var product = formatProductHTML(val.ID, val.PRICE, val.TITLE, val.LINK);
$(product).appendTo('#productList');
});
});
}
問題是,當我第一次點擊它時,它將立即取消選中,因此它不會被格式化的GET請求。
任何想法的如何解決這個問題或沒有人知道我在這裏做錯了什麼?
爲什麼不在你的JSON過程之後取消選中它?如果你正在重新加載基於哪個框被檢查的頁面,只需銷燬DOM,即:$('#productList')。empty();並根據選中的框重新添加項目。 –
我只有一個函數「getBrandUrl」,每次單擊複選框或旁邊的鏈接[href]時它都會被觸發。所以問題是如果第一次觸發,複選框會被取消選中,即使我把代碼放在我的getJSON之後。 – Jordy
因此,不要使用字符串,而要使用對象或數組和函數來創建URL。那樣的話,除了拼接你的字符串之外,你可以更好地控制它的移除。 –