Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:ng禁用不工作_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS:ng禁用不工作

Javascript AngularJS:ng禁用不工作,javascript,angularjs,Javascript,Angularjs,我正在尝试根据输入类型值禁用启用按钮。下面是AngularJSHTML代码 <div ng-app> <form name="myForm" ng-controller="ctrl"> <input type="text" ng-model="name" ng-required="true" /> <span>{{name}}</span> <input type="subm

我正在尝试根据输入类型值禁用启用按钮。下面是AngularJSHTML代码

<div ng-app>
    <form name="myForm" ng-controller="ctrl">
        <input type="text" ng-model="name" ng-required="true" />
        <span>{{name}}</span>
        <input type="submit" value="Submit" ng-disabled="myForm.name.$pristine" />
    </form>
</div>
但无论如何,按钮都不会被禁用

这是你的电话号码


注意:我只希望在文本框没有任何值时禁用该按钮,反之亦然

您需要在输入上使用该按钮和
名称

看到我的小提琴了吗

为您修复了它

您指的是
名称
,它作为输入id/名称不存在

<input id="name" name="name" type="text" ng-model="name" ng-required="true" />


在输入中添加'name'属性,这样可以解决问题

<div ng-app>
 <form name="form" ng-controller="ctrl">
   <input type="text" name="name" ng-model="name" ng-required="true" />
   <span>{{name}}</span>
   <input type="submit" value="Submit" ng-disabled="form.name.$pristine" />
 </form>
</div>

{{name}}

myForm.name
指的是
name
属性设置为“name”的第一个控件。因为没有,所以它引用forms
name
属性本身,返回“myForm”<代码>“myForm”。$pristine未定义,因此
ng disabled=undefined
不起作用

正如前面提到的,您需要将
name=“name”
属性添加到它应该引用的控件中

<input type="text" name="name" ng-model="name" ng-required="true" />

更改了您的代码

  <div ng-app> <form name="myForm" ng-controller="ctrl">
 <input type="text" ng-model="name" ng-required="true" />
 <span>{{name}}</span>
 <input type="submit" value="Submit" name='myName' ng-model='name' ng-disabled="!myForm.$pristine" /> </form> </div> 

{{name}}
(注意否定)

您甚至可以使用“myForm.$invalid”。 ng disabled需要一个bool值/表达式返回bool

换句话说,它读取布尔值。

试试这个

<input type="submit" value="Submit" ng-disabled="name==undefined || name==''" />


希望它能帮上忙。…。

试试这个,也许会有用

< input type="search" ng-required="true" placeholder="username to find" ng-model="username" />
< input type="submit" value="search" ng-disabled="!username" />
与:

ng-disabled="{{myForm.name.$pristine}}"

*它不工作。*在演示中,无论输入文本是否有值,它似乎都被禁用。当textbox中没有数据时,我试图将其禁用,versaI在submit not input文本框上应用了指令。这只在最初起作用。如果我输入文本并删除,它不会禁用按钮prestine,这意味着控件未被触摸、清空或其他。您可以在html上使用required属性并检查
myForm.name.$error.required
。请参阅开发人员api for form ng disabled=“!name”也能很好地工作。这解决了我的问题,即使每个人都说要删除angular指令中的括号
    <div ng-app>
<form name="myForm" ng-controller="ctrl">
    <input type="text" ng-model="name" ng-required="true" />
    <span>{{name}}</span>
    <input type="submit" value="Submit" ng-disabled="{{myForm.name.$pristine}}" />
</form>
ng-disabled="myForm.name.$pristine"
ng-disabled="{{myForm.name.$pristine}}"