在下一页中,使用Firefox,删除按钮提交表单,但添加按钮不提交.如何阻止删除按钮提交表单?
<html>
<head>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
function addItem() {
var v = $('form :hidden:last').attr('name');
var n = /(.*)input/.exec(v);
var newPrefix;
if ( n[1].length == 0 ) {
newPrefix = '1';
} else {
newPrefix = parseInt(n[1])+1;
}
var oldElem = $('form tr:last');
var newElem = oldElem.clone(true);
var lastHidden = $('form :hidden:last');
lastHidden.val(newPrefix);
var pat = '=\"'+n[1]+'input';
newElem.html(newElem.html().replace(new RegExp(pat, 'g'), '=\"'+newPrefix+'input'));
newElem.appendTo('table');
$('form :hidden:last').val('');
}
function removeItem() {
var rows = $('form tr');
if ( rows.length > 2 ) …Run Code Online (Sandbox Code Playgroud) 如果我想在用户点击"保存"或"提交"按钮排序的一段时间内禁用表单控件(或者至少使它们不可用于用户交互),那么我遇到了什么是最好(和正确)方法的困境和通过电线传输的数据.我不想使用JQuery(这是邪恶的!!!)并查询所有元素作为数组(通过类或属性标记)我到目前为止的想法是:
cm-form-control自定义指令标记所有元素,该指令将订阅2个通知:"数据发送"和"数据处理".然后自定义代码负责推送第二个通知或解决承诺.promiseTracker它(不幸!)强制生成非常愚蠢的代码,如ng-show="loadingTracker.active()".显然并非所有元素都有ng-disabled,我不想让用户ng-hide/show避免"跳舞"按钮.有没有人有更好的主意?提前致谢!
更新:领域集 的想法是有效的.对于那些仍然想要做同样事情的人来说,这是一个简单的小提琴http://jsfiddle.net/YoMan78/pnQFQ/13/
HTML:
<div ng-app="myApp">
<ng-form ng-controller="myCtrl">
Saving: {{isSaving}}
<fieldset ng-disabled="isSaving">
<input type="text" ng-model="btnVal"/>
<input type="button" ng-model="btnVal" value="{{btnVal}}"/>
<button ng-click="save()">Save Me Maybe</button>
</fieldset>
</ng-form>
</div>
Run Code Online (Sandbox Code Playgroud)
和JS:
var angModule = angular.module("myApp", []);
angModule.controller("myCtrl", function ($scope, $filter, $window, $timeout) {
$scope.isSaving = undefined;
$scope.btnVal = 'Yes';
$scope.save = function()
{
$scope.isSaving = true;
$timeout( function()
{
$scope.isSaving = false;
alert( 'done');
}, 10000);
};
});
Run Code Online (Sandbox Code Playgroud) 在DRY主体之后,我想写一个按钮指令,它在$ http类的持续时间内保持按钮被禁用.
我想这样做是为了禁止用户多次单击按钮,但我无法考虑如何在指令中获取函数承诺状态,因为函数驻留在$ scope
该场景非常通用,按钮ng-click确实调用了一个函数,该函数又进行$ http调用.用户点击:按钮应该被禁用,只有在$ http调用解决后才能启用,无论是成功还是失败.
我正在使用fuelUX向导和Angularjs.我希望根据此控制器方法启用或禁用下一个按钮:
$scope.canMoveForward = function(){
switch($("#moduleWizard").wizard("selectedItem").step){
case 1:
//check if the module on the first step is valid*/
return $scope.validSelection && $scope.linkedPredicateForm.$valid;
case 2:
//check if the table is empty
return !linkingDataSource.isEmpty();
case 3:
var enab= ($scope.saveModeForm.$valid && $scope.newSourceForm.$valid) ||
($scope.saveModeForm.$valid && $scope.appendSourceForm.$valid)
}
};
Run Code Online (Sandbox Code Playgroud)
确实这就是我如何删除按钮:
<div class="actions">
<button class="btn btn-mini btn-prev" ng-click="refresh()"> <i class="icon-arrow-left"></i>Prev</button>
<button class="btn btn-mini btn-next" data-last="Finish" id="wizard-next" ng-disabled="!canMoveForward()"
ng-click="handleStepResult()">
Next<i class="icon-arrow-right"></i></button>
</div>
Run Code Online (Sandbox Code Playgroud)
它工作正常,除非我从第二页返回到第一页:如果第二页中的下一个按钮被禁用,即使在第一页也是如此,除非我不在那里编辑表单.无论如何刷新ng-disabled绑定?