我有一个产品列表,每个产品都有一个复选框值,其中的产品id是“321”。当产品复选框被选中时(可以超过1个)我要求收集价值。每个产品还有一个输入文本字段用于定义数量,例如“23”,我还需要收集此数量值。只有当复选框被选中并且数量文本值大于1时才应收集数量文本输入。计划是收集所有这些对象,将它们放入循环中,最后将它们转换为字符串,然后我可以将它们显示结果。使用Javascript发送复选框和文本输入值为URL字符串
到目前为止,我已经设法收集复选框的值,并把它们放到一个字符串中,但我不知道如何收集额外的文本数量输入值而不打破它。我的理解是,document.getElementsByTagName('input')能够收集两种输入类型,因为它基本上是查找输入标签,所以我只需要弄清楚如何收集和循环复选框和文本输入。
有人建议我使用2个if语句来完成这个任务,但我是学习JavaScript的新手,所以我不完全知道如何去做。我曾尝试在第一个下面直接添加if语句(就像在php中),但这似乎完全打破了它,所以我认为这是错误的。
这是我迄今为止的工作代码,它收集复选框的值并将它们放入一个字符串中。如果您选中复选框并按下按钮,则数值将作为字符串返回。请注意,目前没有任何内容附加到qty =因为我不知道如何收集和循环文本输入(这是我需要帮助的)。
我怎么能收取额外数量的输入值,这个数字追加到数量=
// function will loop through all input tags and create
// url string from checked checkboxes
function checkbox_test() {
var counter = 0, // counter for checked checkboxes
i = 0, // loop variable
url = '/urlcheckout/add?product=', // final url string
// get a collection of objects with the specified 'input' TAGNAME
input_obj = document.getElementsByTagName('input');
// loop through all collected objects
for (i = 0; i < input_obj.length; i++) {
// if input object is checkbox and checkbox is checked then ...
if (input_obj[i].type === 'checkbox' && input_obj[i].checked) {
// ... increase counter and concatenate checkbox value to the url string
counter++;
url = url + input_obj[i].value + '&qty=' + '|';
}
}
// display url string or message if there is no checked checkboxes
if (counter > 0) {
// remove first "&" from the generated url string
url = url.substr(1);
// display final url string
alert(url);
}
else {
alert('There is no checked checkbox');
}
}
<ul>
<li>
<form>
<input type="checkbox" id="checked-product" name="checked-product" value="311">Add To Cart
<div class="quantity">
<input type="text" name="qty" id="qty" maxlength="12" value="1" class="input-text qty"/>
</div>
</form>
</li>
<li>
<form>
<input type="checkbox" id="checked-product" name="checked-product" value="321">Add To Cart
<div class="quantity">
<input type="text" name="qty" id="qty" maxlength="12" value="10" class="input-text qty"/>
</div>
</form>
</li>
<li>
<form>
<input type="checkbox" id="checked-product" name="checked-product" value="98">Add To Cart
<div class="quantity">
<input type="text" name="qty" id="qty" maxlength="12" value="5" class="input-text qty"/>
</div>
</form>
</li>
</ul>
<button type="button" onclick="javascript:checkbox_test()">Add selected to cart</button>
你是不是在这里'+ '&数量=' +字符串中添加量 '|';'吧?也许这是问题。 – Zack
是的,这是问题,但我不知道如何收集和计数复选框和文本输入值而不打破它。 – markbarabus
'input_obj'将包含'checkbox'和'text'元素,所以你可以在你的for循环中有2个if语句,当它是一个checkbox时,添加'product =',并且当它是一个'text '添加URL的'qty ='部分。 – Zack