我试图通过写一些字段来检查我的表单是否正在编辑.我读过$ dirty应该为这个任务工作,但我无法弄清楚我在这里缺少什么:
<!DOCTYPE html>
<html lang="en">
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="formCtrl">
<form name = "myForm" novalidate>
First Name:<br>
<input type="text" ng-model="user.firstName"><br>
Last Name:<br>
<input type="text" ng-model="user.lastName">
<br><br>
<button ng-click="reset()">RESET</button>
</form>
<p> is Form dirty? {{isDirty}}<p>
<p>form = {{user }}</p>
<p>master = {{master}}</p>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('formCtrl', function($scope) {
$scope.master = {firstName:"John", lastName:"Doe"};
$scope.reset = function() {
$scope.user = angular.copy($scope.master);
};
$scope.reset();
$scope.isDirty = $scope.myForm.$dirty;
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我试图在用户修改表单时将标志isDirty设为true.谢谢
似乎有许多解决方案非常接近于解决我的问题,但是我所倾倒的几十个问题似乎并没有完全解决我正在尝试做的事情.虽然我看到几乎同样的问题没有答案.我尝试了很多选项和功能组合无济于事.
我想使用模态表单将带有输入值的新行添加到jqGrid,但我不希望它在提交时发布到服务器.我想最终发布到服务器,但只有在客户端用户对从模式表单添加的行执行了额外编辑(如果需要)之后.我不希望任何行保存到远程数据库,直到客户端执行了一些编辑,这些编辑又动态更新其他列.验证某个值的某个状态后,将显示"保存"按钮,并且可以将"网格"行发布到服务器.除非满足此验证条件,否则不会将行提交给数据库.我在我的应用程序的其他地方使用了一些jqGrids,它们发布了提交的模式表单的新行数据,但是这个网格我试图完成与客户端不同的东西,而不是立即涉及服务器.我喜欢使用客户端用户初始输入值的模态表单的更直观的界面,然后根据需要编辑内联新行的字段,这是我的问题所必需的:我可以将表单作为新行提交发生在服务器上的任何发布操作?
我在jqGrid Wiki资源中看到一个用户发表的评论,该用户说"clientArray"是输入的值,使用Grids模态表单提交选项"editurl:"clientArray"模式表单不会吐出"No URL is set "消息但它仍然存在并且新行未添加到网格中.我已将Grid数据类型设置为本地"数据类型:'clientSide'"但是获得相同的"No URL is set"错误消息.脚本是对于由自定义按钮调用的模态窗体非常简单,如下所示:
("footerrow,userDataOnFooter和altRows"选项作为更新值的一部分包含在摘要页脚中,该页脚与通过模态表单添加的新行的单元格执行的编辑相关)
jQuery("#grid_test").jqGrid({
url:'/grid_test_url.asp?id=' + vId,
datatype: "clientSide",
colNames: ['ID','Col 1', 'Col 2', 'Col 3','Col 4'],
colModel: [
{name:'id',index:'id',width:90,align:"center",editable:true,editoptions:{size:25}, formoptions: {...}, editrules: {...}},
{name:'col1',index:'col1',width:130,align:"right",editable:true,editoptions:{size:25}, formoptions: {}, editrules: {}},
{name:'col2',index:'col2',width:130,align:"right",editable:true,editoptions:{size: 25}, formoptions: {}, editrules: {}},
{name:'col3',index:'col3',width:130,align:"right",editable: true,editoptions:{size:25}, formoptions: {}, editrules: {}},
{name:'col4',index:'col4',width:130,align:"right",editable:true,editoptions:{ size: 25 }, formoptions: {}, editrules: {}}
],
rowNum:5,
rowList:[5,10,20],
pager: '#pgrid_test',
toolbar: [true, "top"],
editurl: '', //not sure what would go here to block attempted post by the …Run Code Online (Sandbox Code Playgroud) 在form_editing的jqGrid文档中,我看到了form_editing是如何构造的.
<form ...>
<table>
<tr id='tr_myfield'>
<td> Caption</td>
<td>edited element named, in colModel, as "myfield"</td>
</tr> ...
</table>
</form>
Run Code Online (Sandbox Code Playgroud)
我可以改变这种结构吗?
这对我来说是必要的,因为我有太多的列可以在我的表单中编辑,我想以最友好的方式显示表单.例如,当我在表格中编辑了20列时.我的表格中有二十排.但我会为两列获得一行.我知道每行都是通过索引来识别的,所以我不能只在同一行中有两列.但如果它可以伪造它,请确保它让我高兴^^(例如,有两个表和一个类似的id或form_editing参数,我不知道......)
PS:抱歉我的英语不好.