仅在发生更改时生成警报

时间:2015-02-12 12:01:06

标签: jquery html angularjs

我有一张<contenteditable> <td>的表格,我想只在发生变化时创建警报但我无法让它工作......当我尝试比较价值时我最终将它与自己(我认为)进行比较,并始终发出警报。 这是我的功能:

$scope.saveCron = function(userId,scriptId,cronFormat){
        var pre = cronFormat;
        $.post("updateCronChange.php","user_id="+userId+"&script_id="+scriptId+"&cron_format="+cronFormat, function(data){
        $scope.demoData = userId + scriptId + cronFormat;
        angular.equals(pre,cronFormat){
        alert("user script settings table update the cron format to:"+cronFormat);}
    });
}

这是我的表:

        <table class="table table-bordered table-hover" ng-

    controller="tableCtrl">
                <thead>
                <th>user name</th>
                <th>script name</th>
                <th>cron format<span class="glyphicon glyphicon-question-sign"  data-toggle="tooltip" data-original-title="Min|Hour|Day Of Month|Month|Day Of Week"></span></th>
                </thead>
                <tbody ng-repeat="(user_id,script_id) in data">
                    <tr ng-repeat="(script_id, cron_format) in script_id">
                        <td class="userName">{{user(user_id)}}</td>
                        <td class="scriptName">{{script(script_id)}}</td>
<td class="cronFormat"><input type="text" ng-model="cron_format" ng-blur="saveCron(user_id,script_id,cron_format)"/></td>                    </tr>
                </tbody>
            </table>

每当moustout输入字段时调用该函数。如果用户在cron_format中更改数据,我可以显示警告吗?

更新功能

2 个答案:

答案 0 :(得分:0)

你可以这样做到cron格式行

<td class="cronFormat"><input type="text" ng-model="data.cronFormat"></td>

并将其用于您的javascript:

$scope.data = {};
$scope.$watch('data.cronFormat',function(){
 alert('something is happening');
});

这将监视data.cronFormat的更改并更新每次更改,ng-model将您的输入绑定到$ scope变量。你应该添加数据。如果你应该使用指令来防止麻烦,请阅读更多https://docs.angularjs.org/guide/scope

如果你只需要完全改变它就可以像这样尝试

<td class="cronFormat"><input type="text" ng-model="data.cronFormat" ng-focus="storeOld()" ng-blur="checkNew()"></td>

Javascript:

$scope.data = {} 
var old = '';
$scope.storeOld = function(){
   old = $scope.data.cronFormat;
};
$scope.checkNew = function(){
   if(old != $scope.data.cronFormat){
        alert('it has changed');
   }
};

这将在用户选择输入时存储旧值,并在用户离开输入时检查它是否已更改。

答案 1 :(得分:0)

在观看中使用旧值和新值: -

$scope.$watch('data.cronFormat',function(new,old){
 if(new!=old){
alert('it has changed');
}
});

而是在ng-blur的位置使用ng-change:)