AngularJS-通过ajax提交带有复选框的表单
AngularJS - submit form with checkboxes via ajax
我有一个包含checkboxes
和其他输入字段的表单。data-ns-form
指令用于通过ajax提交表单数据。此表单的控制器是UserController
。
HTML
<div ng-controller="UserController">
<form data-ns-form="formData">
Full Name : <input type="text" name="fullname" ng-model="formData.fullname" />
Favourite Beverage :
<label>
<input type="checkbox" name="beverages[]" ng-model="formData.beverages[0]" value="coffee"> Coffee
</label>
<label>
<input type="checkbox" name="beverages[]" ng-model="formData.beverages[1]" value="tea"> Tea
</label>
<label>
<input type="checkbox" name="beverages[]" ng-model="formData.beverages[2]" value="colddrinks"> Cold Drinks
</label>
<button type="submit"> Send </button>
</form>
</div>
控制器
app.controller('UserController', function($scope){
$scope.formData = {fullname : '', beverages : []};
});
指令
app.directive('nsForm', function(){
return {
restrict : "A",
scope: {
formData : "=nsForm"
},
link : function(scope, iElem, iAttr) {
$(iElem).on('submit', function(e) {
e.preventDefault();
console.log("FORM DATA");
console.log(scope.formData);
});
}
}
});
一点描述
当我提交表单时,我会为选中的复选框获取布尔值TRUE,但我希望值位于值atterbute中。例如,如果我选择了"咖啡"answers"冷饮",我会得到beverages=[true,false,true]
,但我想要的是beverages['coffee','colddrink']
。AngularJS
的方法是什么?还有。有没有preferred
的方式可以在AngularJS
中提交表单,而不是自己创建directives
?
我看不出这里有任何"name"属性的原因。您需要将ng-click
与保存数据的功能一起使用,这应该由服务来处理。你可以用棱角分明的。。。在文档中搜索您正在做的任何事情(例如,请参阅文档中的复选框)。
现场演示(点击)。
<div ng-controller="UserController">
Favourite Beverage :
<label>
<input type="checkbox" ng-model="formData.beverages[0]" ng-true-value="coffee">Coffee
</label>
<label>
<input type="checkbox" ng-model="formData.beverages[1]" ng-true-value="tea">Tea
</label>
<label>
<input type="checkbox" ng-model="formData.beverages[2]" ng-true-value="colddrinks">Cold Drinks
</label>
<button ng-click="save()"> Send </button>
</div>
js:
var app = angular.module('myApp', []);
app.factory('myService', function($http) {
var myService = {
save: function(data) {
//your ajax call here
console.log(data);
}
};
return myService;
});
app.controller('UserController', function($scope, myService) {
$scope.formData = {};
$scope.formData.beverages = [];
$scope.save = function() {
myService.save($scope.formData);
};
});
此外,您可能应该将所有数据(例如饮料值)都保存在javascript中,而不是html中,然后将其绑定到页面。或者在数据库中,然后进入js,然后进入页面。这一切都取决于你的信息需要有多动态——只是一定要提前思考。
相关文章:
- jquery从2个json字符串构建一个复选框表单
- ASP MVC复选框表单提交问题
- 如果用户未选中复选框或选择按钮,如何为复选框或单选按钮设置一些默认值
- 如何禁用自定义复选框的单击事件
- 复选框表单字段名称在表单提交淘汰js时不提交
- Angular,获取Ng中复选框(或单选框)所需的Ng重复
- 复选框-在单击待办事项列表的复选框时划掉文本
- 如何在选中所有输入复选框和单选组后显示javascript确认消息
- JavaScript 复选框表 - 如何添加值并查找最高值
- Javascript 复选框表单验证
- Jquery复选框分组 - 单击至少一个子复选框时取消选中父项,选中所有子复选框时选中父项
- 复选框在单击时隐藏行
- 如何在复选框更改单击时唯一标识 jQuery 函数
- 禁用复选框在单击其行时起作用
- 根据复选框的单击来改变表内行的颜色
- Javascript表单验证复选框和单选不起作用
- 如何将复选框表单字段从一个表单复制到另一个
- 在表单操作与复选框或单选按钮之间交替进行
- 如何在不使用复选框或单选按钮的情况下将表中选定的数据发送到Struts2中
- BootStrap Modal + JS/AJAX 复选框表单提交