根据AngularJS的输入更改按钮名称

Changing button name depending on inputs with AngularJS

本文关键字:按钮 AngularJS 输入 根据      更新时间:2023-09-26

如何更改按钮名称,这取决于某些输入是否为空示例:如果 input1 和 input2 不为空,但 input3 为空 - 按钮名称将为"Test"。

这是我的代码,但我不起作用

    <div ng-app="myApp">
<form action="lab2.php" method="POST" ng-controller="controller">
<label>ID</label>
<input type="number" name="id" ng-model="id" name="id"/>
{{id}}
<label>Name:</label>
<input name="name" ng-model="name"  type="text"/>
<label>City:</label>
<input name="country" ng-model="country" type="text"/>
<button ng-bind="but" type="submit">{{getName()}}</button>
</form>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('controller', function($scope) {
    $scope.but="Operation";
    $scope.id=0;
    $scope.country="";
    $scope.name="";
    $scope.getName = function(){
    if($scope.id==0 && $scope.name!=="" && $scope.country!=="")
    {
        return "INSERT";
    }
    if($scope.id!==0 && $scope.name=="" && $scope.country=="")
    {
    return "DELETE";   
    }
    if($scope.id!==0 && $scope.name!=="" && $scope.country!=="")
    {
return "UPDATE";    
    }
}    
});
</script>

var app = angular.module("app",[]);
app.controller("MyCtrl" , function($scope){
  
   $scope.name1 = "Test";
    $scope.name2 = "";
    $scope.name3 = "Test3";
  
  $scope.getName = function(){
      if( $scope.name1 == "" &&  $scope.name2 == "" &  $scope.name3 !== "")
         return "Test";
    return "Other";
    }
    
  });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="MyCtrl">
   
      <input type="text" ng-model="name1">
  <input type="text" ng-model="name2">
  <input type="text" ng-model="name3">
  
  <input type="button" name="{{getName()}}" value="{{getName()}}">
       
 
</div>

试试这个:

<input ng-model="vm.input1" name="input1" type="text"/>
<input ng-model="vm.input2" name="input2" type="text"/>
<input ng-model="vm.input3" name="input3" type="text"/>
<button> {{(vm.input1 && vm.input2 && !vm.input3) ? 'Test' : 'Something Else' }} </button>

这些方面的东西会起作用...

JSFIDDLE: http://jsfiddle.net/0jeantca/3/

希望这有帮助...

名称是指名称属性还是显示文本?下面的代码适用于这两种情况。

在您的模板中,您可以编写

<button name={{setName()}}>{{setName()}}</button>

在您的控制器中,您可以编写

$scope.setName = function()
{
  // you can use switch here
  var buttonName = "";
  if($scope.input1 && $scope.input2 && !$scope.input3)
    buttonName = 'Foo';
  else
    buttonName = 'Bar';
  return buttonName;
}

注意:由于每次输入都会更改,按钮文本也会更改,因此应该没问题。但是,如果您打算更改 name 属性,那么,这将给读取您的代码的人带来问题。