AngularJS:防止空的(但脏的)表单输入包含在AJAX帖子中

AngularJS: prevent empty (but dirty) form inputs from being included in AJAX post

本文关键字:输入 包含 AJAX 表单 AngularJS      更新时间:2023-09-26

我有一个带有"地址"部分的表单。我使用$http post请求将表单数据发送到服务器。

如果我没有在地址字段中键入任何内容(原始),则地址数据不会包含在我发送到服务器的对象数据中。

如果我确实在地址字段中键入了一些内容,则删除我键入的内容(留空),空字段将包含在发送到服务器的JSON中:

{
    street:"",
    city:""
} 

如果字段为空,我不想包含(可选)地址数据。

如果单独的表单字段为空,有没有一种方法可以轻松地将其重置为"原始"?

将某些内容设置为原始状态的唯一方法是手动。也就是说,一旦一个表单被触摸,它就会被触摸,直到你说不一样。

我可能会在更新函数中检查表单字段中的值,并依赖原始状态。

我认为您可以使用ng模式来使空字段无效,这将阻止它们添加到您提交的对象中。我会在控制器中添加类似的内容

$scope.nonEmpty=/^(.+)$/i

然后在HTML 中

<输入ng pattern='nonEmpty'…>

如果字段为空,则不会添加它,因为它与模式不匹配,否则将发送

您可以监视该值,检查是否为空,然后手动将其重置为原始

$scope.$watch('inputName',function(newVal){
  if(newVal ==="")
     $scope.form.inputName.$pristine = true;
});