我是Javascript的新手,无法解决这个问题。我有一个复选框表单,所以我需要获得所选的值并发布到php文件中。
这是脚本:
<script>
$("#addusers").click(function(){
var checkedValue = null;
var inputElements = document.getElementsByClassName('values');
for(var i=0; inputElements[i]; ++i){
if(inputElements[i].checked){
checkedValue = inputElements[i].value;
break;
}
}
$.post("users_add.php", {
checkedValue:checkedValue
}, function(data) {
alert(data);
});
});
</script>
以下是php代码:
<td>
<div>
<?php
foreach($userProfiles as $u)
{
foreach($u as $x)
{
echo "<input type='"checkbox'" name='"values'"> $x";
echo "<br>";
}
}
?>
</div>
</td>
我正在检查print_r($_POST)POST变量,但它没有显示任何内容。我的javascript可以吗?
不要担心自己是javascript的新手,我们都会从某个时候开始。关于你的代码,首先你的"for cycle"是保存第一个值,然后跳过,我知道你还没有收到任何东西,但我猜你只会得到一个值。没有发布任何内容的最合理原因是您没有使用正确的选择器。例如:var inputElements = document.getElementsByClassName('values');
将检索如下所示的所有html元素:<input type="text" class="values" />
哦,对不起,我刚刚注意到你确实发布了你的html代码,因为你已经在使用jQuery了,没有必要将其与香草javascript混合,下面是我为你的代码找到的更正:
var checkedValues = [];
var inputElements = $('input[type="checkbox"]');
inputElements.each(function () {
if($(this).is(':checked')){
checkedValues.push($(this).val());
}
});
说明:var checkedValues = [];
通过这种方式,我们用javascript声明了一个数组,这样我们就可以访问数组方法"push"来插入满足我们条件的元素(选中的复选框)。
var inputElements = $('input[type="checkbox"]');
这是对DOM元素的jQuery选择,我们说"获取所有具有type=checkbox属性的输入元素。您可以在其官方网站上了解更多关于jQuery选择器的信息:https://api.jquery.com/category/selectors/
inputElements.each(function () {
if($(this).is(':checked')){
checkedValues.push($(this).val());
}
});
这一点可以做一些事情inputElements.each(function(){});
这将在inputElements选择中执行一个函数"for each"元素。你可以在官方文档中获得更多关于jQuery.each的信息:https://api.jquery.com/each/
if($(this).is(':checked'))
这个if询问循环中的当前元素是否设置了"checked"属性。我们使用$(this)将从原始选择中获得的纯DOM元素转换为jQuery对象,以使用"is"方法。
checkedValues.push($(this).val());
在这里,我们添加一个元素的VALUE,该元素具有选中的属性集,而不是元素,也不是布尔值,而是输入的"VALUE"属性中设置的任何值。
任何不清楚或不起作用的东西都可以随意询问,并愉快地编码!:)