单击按钮时提醒输入类型文本的值
put on alert the value of input type text when button is clicked
我是第一次使用 closest(javascript),我正在尝试提醒用户输入,其他元素的提醒工作正常,但用户输入的提醒不起作用'没工作
这是 html 和 php
<div class="form-group row my-5">
<?php
$sqlb = "SELECT * from products where status ='active' order by availability asc";
$resultb = $conn->query($sqlb);
while($rowb = $resultb->fetch_assoc()){
$id=$rowb['id'];
$names=$rowb['names'];
$price=$rowb['price'];
$image=$rowb['image'];
$availability=$rowb['availability'];
$qty=$rowb['qty'];
$description=$rowb['description'];
?>
<div class="col-sm-3 mb-2 mb-sm-0 my-3">
<div class="col-sm col-md-12 btn-cart" id="<?php echo $id ?>" style="border:2px solid black; border-radius:5px">
<div class="" style="text-align:center">
<img src="../<?php echo $image ?>" alt="" width="100" height="100" style="border-radius:5px;"><br>
<span class="names"><?php echo $rowb['names']; ?></span><br>
<span class="price mr-2">₱<?php echo $rowb['price']; ?> </span><br>
<input type="text" name="" value="<?php echo $qty ?>" onkeypress='return event.charCode >= 48 && event.charCode <= 57' maxlength="11" class="item_qty">
</div>
<button type="button" name="button" id="add" class="btn btn-block btn-primary" width="10em">Add <i class="fa fa-plus"></i> </button>
</div>
</div>
<?php } ?>
</div>
这是我的脚本
$('button#add').click(function() {
var id = $(this).closest('div.btn-cart').attr('id');
var item_name = $('div#' + id + ' span.names').text();
var item_price = $('div#' + id + ' span.price').text();
var item_pic = $('div#' + id + ' span.image').text();
var item_qty = $('div#' + id + ' input.item_qty').attr('value');
if (item_qty <= 0) {
item_qty = 1;
}
alert(item_qty);
alert(item_name);
alert(item_price);
alert(id);
});
只有输入类型="text"的警报(item_qty)不起作用,它只是不断显示来自
的警报“1”
var item_qty = $('div#' + id + ' input.item_qty').attr('value');
if (item_qty <= 0) {
item_qty = 1;
}
即使我输入“654321”或任何其他数字
您正在访问您用 <input type="text" name="" value="<?php echo 1 ?>"
设置的 value
属性。您要做的是访问 DOM 值:
$('div#' + id + ' input.item_qty').val()
-或-
$('div#' + id + ' input.item_qty').get(0).value
附录
您可以通过其他方式改进您的代码。在许多情况下,您使用的是选择器 'div#' + id
,div 不是必需的,并且会减慢 jQuery 查找速度。作为微优化(和更少的代码)考虑在整个代码中进行如下类似更改:
发件人:$('div#' + id + ' input.item_qty')
收件人:$('#' + id).find('input.item_qty')
此外,您可以使用原生 JavaScript 语法而不是 jQuery:
jQuery: $('div#' + id + ' input.item_qty').attr('value')
香草:document.querySelector('#'+id+' input.item_qty').value
重写
$('#add').click(function() {
let $container = $(this).closest('div.btn-cart');
let item = {
name: $container.find('span.names').text(),
price: $container.find('span.price').text(),
pic: $container.find('span.image').text(),
qty: $container.find('input.item_qty').val()
};
if (item.qty <= 0)
item.qty = 1;
alert(`
qty: ${item.qty}
name: ${item.name}
pic: ${item.pic}
price: ${item.price}
`);
});
我是第一次使用 closest(javascript),我正在尝试提醒用户输入,其他元素的提醒工作正常,但用户输入的提醒不起作用'没工作
这是 html 和 php
<div class="form-group row my-5">
<?php
$sqlb = "SELECT * from products where status ='active' order by availability asc";
$resultb = $conn->query($sqlb);
while($rowb = $resultb->fetch_assoc()){
$id=$rowb['id'];
$names=$rowb['names'];
$price=$rowb['price'];
$image=$rowb['image'];
$availability=$rowb['availability'];
$qty=$rowb['qty'];
$description=$rowb['description'];
?>
<div class="col-sm-3 mb-2 mb-sm-0 my-3">
<div class="col-sm col-md-12 btn-cart" id="<?php echo $id ?>" style="border:2px solid black; border-radius:5px">
<div class="" style="text-align:center">
<img src="../<?php echo $image ?>" alt="" width="100" height="100" style="border-radius:5px;"><br>
<span class="names"><?php echo $rowb['names']; ?></span><br>
<span class="price mr-2">₱<?php echo $rowb['price']; ?> </span><br>
<input type="text" name="" value="<?php echo $qty ?>" onkeypress='return event.charCode >= 48 && event.charCode <= 57' maxlength="11" class="item_qty">
</div>
<button type="button" name="button" id="add" class="btn btn-block btn-primary" width="10em">Add <i class="fa fa-plus"></i> </button>
</div>
</div>
<?php } ?>
</div>
这是我的脚本
$('button#add').click(function() {
var id = $(this).closest('div.btn-cart').attr('id');
var item_name = $('div#' + id + ' span.names').text();
var item_price = $('div#' + id + ' span.price').text();
var item_pic = $('div#' + id + ' span.image').text();
var item_qty = $('div#' + id + ' input.item_qty').attr('value');
if (item_qty <= 0) {
item_qty = 1;
}
alert(item_qty);
alert(item_name);
alert(item_price);
alert(id);
});
只有输入类型="text"的警报(item_qty)不起作用,它只是不断显示来自
的警报“1”var item_qty = $('div#' + id + ' input.item_qty').attr('value');
if (item_qty <= 0) {
item_qty = 1;
}
即使我输入“654321”或任何其他数字
您正在访问您用 <input type="text" name="" value="<?php echo 1 ?>"
设置的 value
属性。您要做的是访问 DOM 值:
$('div#' + id + ' input.item_qty').val()
-或-
$('div#' + id + ' input.item_qty').get(0).value
附录
您可以通过其他方式改进您的代码。在许多情况下,您使用的是选择器 'div#' + id
,div 不是必需的,并且会减慢 jQuery 查找速度。作为微优化(和更少的代码)考虑在整个代码中进行如下类似更改:
发件人:$('div#' + id + ' input.item_qty')
收件人:$('#' + id).find('input.item_qty')
此外,您可以使用原生 JavaScript 语法而不是 jQuery:
jQuery: $('div#' + id + ' input.item_qty').attr('value')
香草:document.querySelector('#'+id+' input.item_qty').value
重写
$('#add').click(function() {
let $container = $(this).closest('div.btn-cart');
let item = {
name: $container.find('span.names').text(),
price: $container.find('span.price').text(),
pic: $container.find('span.image').text(),
qty: $container.find('input.item_qty').val()
};
if (item.qty <= 0)
item.qty = 1;
alert(`
qty: ${item.qty}
name: ${item.name}
pic: ${item.pic}
price: ${item.price}
`);
});