javascript - 单击一个复选框后,所有复选框都被选中
问题描述
我正在使用 html pdo 制作一个表单,并且有 angular js 用于验证,但是单击一个框后我需要复选框的部分,其余复选框也是 getteng check
我的表格
<input type="checkbox" name="declaration" id="declaration" ng-model="formData.decl" /> 1 data<br/>
<input type="checkbox" name="declaration" id="declaration" ng-model="formData.decl" /> 2 data<br/>
这是insert.php
///////////////////////
if(empty($form_data->decl))
{
$error[] = 'Choosing declaration is required';
}
else
{
$declaration = $form_data->decl;
}
$data = array(
':declaration' => $declaration
);
if(empty($error))
{
$query = "
INSERT INTO tbl
(declaration) VALUES
(:declaration)
";
$stmt = $db->prepare($query);
if($stmt->execute($data))
{
$message = 'Data Added';
}
}
else
{
$validation_error = implode(", ", $error);
}
$output = array(
'error' => $validation_error,
'message' => $message
);
echo json_encode($output);
这是完整的角度js
var app = angular.module('dynamicApp', []);
app.controller('dynamicController', function($scope, $http){
$scope.success = false;
$scope.error = false;
$scope.rows = [{name: 'travel_details[]', name: 'remove'}];
$scope.addRow = function(){
var id = $scope.rows.length + 1;
$scope.rows.push({'id':'dynamic'+id});
};
$scope.removeRow = function(row){
var index = $scope.rows.indexOf(row);
$scope.rows.splice(index, 1);
};
$scope.formData = {};
$scope.submitForm = function(){
$http({
method:"POST",
url:"insert.php",
data:$scope.formData
}).success(function(data){
if(data.error != '')
{
$scope.success = false;
$scope.error = true;
$scope.errorMessage = data.error;
}
else
{
$scope.success = true;
$scope.error = false;
$scope.successMessage = data.message;
$scope.formData = {};
$scope.rows = [{holder_name: 'travel_details[]', holder_name: 'remove'}];
$scope.fetchData();
}
});
};
});
我看到复选框区域中的部分 ng-model="formData.decl" 导致了这个问题。如果我删除它,那么只会单击单个复选框,但表单验证将不起作用。
有人可以帮我解决这个问题吗?
非常感谢
解决方案
两个复选框都被选中,因为它们绑定到同一个模型:
<input type="checkbox" name="declaration" id="declaration" ng-model="formData.decl" /> 1 data<br/>
<input type="checkbox" name="declaration" id="declaration" ng-model="formData.decl" /> 2 data<br/>
您必须将每个输入绑定到专用模型字段:
<input type="checkbox" name="declaration1" id="declaration1" ng-model="formData.decl_1" /> 1 data<br/>
<input type="checkbox" name="declaration2" id="declaration2" ng-model="formData.decl_2" /> 2 data<br/>
请注意每个输入绑定到的属性(formData.decl_1、formData.decl_2)。此外,我认为将相同的 ID 分配给 DOM 上的两个元素是不符合 W3C 的。
推荐阅读
- c# - 如何访问自定义控件内的数据网格?
- serialization - Ember - 用于序列化和反序列化的不同键
- c# - 为什么由于根元素中的前缀而无法反序列化 XML 字符串?
- c# - 我可以在 C# 中获取空值删除表达式的默认值吗?
- javascript - listener 参数必须是函数错误
- parse-platform - 如何通过聚合查询获取用户电子邮件
- javascript - “您可能需要适当的加载程序来处理此文件类型”
- image - 在 Matlab 中从单个图像中裁剪多个部分
- azure - IoTHub 是否将自定义终结点中的批处理间隔延迟到 Azure 存储?
- html - 如何自动缩进多个文件?