0
目的:我正在嘗試開發一個簡單的腳本,以便從下拉列表中自動選擇一個尺寸並放入購物車,然後繼續結帳。這是在零售網站上的代碼:Knockout:如何將數據綁定到下拉列表中的選定值?
<div id="add">
<div class="product-sizes" data-bind="visible: showSizes">
<label for="ddlStocks">Size</label>
<select name="stocks" id="ddlStocks" data-bind="value: selectedStock, isolatedOptions: sizes, optionsText: 'DisplayName', optionsCaption: 'Size', optionsValue: 'StockId'" data-mini="true">
<option value="">Size</option><option value="134934">UK6.5 - In Stock</option><option value="134935">UK7.5 - In Stock</option><option value="134936">UK8 - In Stock</option><option value="134937">UK8.5 - In Stock</option><option value="134938">UK9 - In Stock</option><option value="134939">UK9.5 - In Stock</option><option value="134940">UK10 - In Stock</option><option value="134941">UK10.5 - In Stock</option><option value="134942">UK11 - In Stock</option><option value="134943">UK12 - In Stock</option><option value="134944">UK13 - In Stock</option></select>
<div class="relax"> </div>
</div>
<div id="cphContent_pnSizeGuide" class="size-guide" style="display:none;">
<a href="/popup/popup-sizechart.aspx" class="show-popup-window"><img alt="" src="/public/images/icons/size-guide.gif"><span>Size Guide</span></a>
</div>
<div class="quantities">
<div data-bind="visible: showQuantities" style="display: none;">
<label for="ddlQuantities">Quantity</label>
<select name="quantities" id="ddlQuantities" data-bind="value: selectedQuantity,
isolatedOptions: quantities" data-mini="true">
<option value="1">1</option></select>
</div>
<input type="button" class="submit" id="addToCart" data-bind="click: addToCart, visible: showAddButton" value="ADD TO CART">
<input type="button" class="submit" id="requestStockAlert" data-bind="click: requestStockAlert, visible: showRequestButton" value="REQUEST STOCK ALERT" style="display: none;">
</div>
</div>
這是我所生成的代碼(我可以選擇正確的尺寸,並將代碼咔噠「加入購物車」,但我無法弄清楚如何將數據-bind所有選擇值
var size = "UK9.5 - In Stock";
function setSelectedIndex(s, v) {
for (var i = 0; i < s.options.length; i++) {
if (s.options[i].text == v) {
s.options[i].selected = true;
return;
}
}
}
setTimeout(function() { setSelectedIndex(document.getElementById("ddlStocks"),size); }, 0530);
setTimeout(function() { ko.applyBindingsToDescendants(document.getElementById('ddlStocks')); }, 0550);
function addToCart() { document.getElementById("addToCart").click();
}
setTimeout(function() { addToCart(); }, 1530);
爲什麼你有這麼多的一個定時器,爲什麼有些八進制的超時值的,爲什麼你在幹什麼所有'setSelectedIndex'的東西,如果你應該使用Knockout? –
我完全不知道如何通過Knockout來處理這個問題,我從來沒有處理過KO。所以我運用了我所知道的基本JS的原理。我放置超時,因爲我認爲可能延遲某些元素會有所幫助。 – user3506408