![](/img/trans.png)
[英]Jquery How to trigger function on without specifying events in the list
[英]How to force jquery's trigger function to trigger all events in forloop?
我正在使用js,php,jquery将复选框输入字段的值保存在javascript数组中的页面上工作,后来又使用了该数组,但是我不知道为什么当我从php foreach循环中手动删除字段时为每个复选框赋予不同的值, 一切正常,正如您在jsfiddle中可以正常运行所看到的那样 ,它首先显示hi ,而不是hi,bi ,最后显示hi,bi,byby按预期。
但是,当我使用php的foreach循环填充这些输入字段的值时,它第一个显示空白,而不是hi而不是hi,bi ,并且不显示最后一个hi,bi,goodby 。 我不知道我在哪里得到这个错误。
我的html代码;
<input type="checkbox" id="selectall"/>Select all<br>
<input id="live_prod_input" type="checkbox" name="live_prod_chk" value="hi" onclick="click_alert(this.value)"/>Check box 1<br>
<input id="live_prod_input" type="checkbox" name="live_prod_chk" value="bi" onclick="click_alert(this.value)"/>Check box 2<br>
<input id="live_prod_input" type="checkbox" name="live_prod_chk" value="goodby" onclick="click_alert(this.value)"/>Check box 3<br>
以下是我输入字段的php代码。
<?php
foreach ($result as $value)
{
?>
<input id="live_prod_input" type="checkbox" name="live_prod_chk" value="<?= $value['p_id'] ?>" onclick="showPause('show_hide_multi_pause')"/>
<?php
}
?>
以下是结果数组
Array
(
[0] => Array
(
[p_id] => 110
[left(p_title,30)] => Samsung GALAXY Note II N7100 [
[left(p_features,30)] => OS : Android , Display : 4.8&q
[p_status] => 1
[od_price] => 800
[od_offer_price] => 750
[pi_image1] => Samsung-Galaxy-S3-Neo_1_110.jpg
[o_sqty] => 65
[o_cond] => New
[od_htime] => 2 Business days
)
[1] => Array
(
[p_id] => 127
[left(p_title,30)] => Samsung Galaxy Note Edge SM-N9
[left(p_features,30)] => this is DeMo FeAtUrE
[p_status] => 1
[od_price] => 654
[od_offer_price] =>
[pi_image1] => Samsung Galaxy Note Edge SM-N915G_1_127.jpg
[o_sqty] => 65
[o_cond] => Old
[od_htime] =>
)
)
并且我将输入值插入为$value['p_id']
。
我们不能对同一页面中的多个元素使用相同的ID 。 您可以为每个复选框使用类 ,而不是使用Id 。 例如,代替$('input#live_prod_input').each(function() {})
使用$('input.live_prod_input').each(function(){})
在以下复选框中
<input id="live_prod_input" type="checkbox" name="live_prod_chk" value="hi" onclick="click_alert(this.value)"/>Check box 1<br>
将上述ID替换为class。
我已经在服务器上重现了您的代码,并且只需稍作更改即可工作:
在php
循环上尝试更改
onclick="showPause('show_hide_multi_pause')"
至
onclick="click_alert(this.value)"
这是对我有用的php循环:
foreach ($result as $value)
{
$p_id = $value['p_id'];
echo <<< LOB
<input id="live_prod_input" type="checkbox" name="live_prod_chk" value="$p_id" onclick="click_alert(this.value)"/>
LOB;
}
完整的HTML代码:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
window.click_alert = function(val) //equivalent to function click_alert()
{
csv_pause = [];
var chboxs = document.getElementsByName("live_prod_chk");
for (var i = 0; i < chboxs.length; i++) {
if (chboxs[i].checked) {
csv_pause.push(chboxs[i].value);
}
}
alert(csv_pause);
}
$(document).ready(function() {
$('#selectall').click(function() { //on click
if(this.checked) { // check select status
$('input#live_prod_input').each(function() { //loop through each checkbox
// this.checked = true; //select all checkboxes with class "checkbox1"
$(this).trigger('click');
// $('input#live_prod_input').trigger('click');
}
);
}else{
$('input#live_prod_input').each(function() { //loop through each checkbox
this.checked = false; //deselect all checkboxes with class "checkbox1"
});
}
});
});
</script>
</head>
<body>
<input id="live_prod_input" type="checkbox" name="live_prod_chk" value="110" onclick="click_alert(this.value)"/>
<input id="live_prod_input" type="checkbox" name="live_prod_chk" value="120" onclick="click_alert(this.value)"/>
</body>
</html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.