2015-11-13 233 views
0

我有一些問題試圖找到最好的方法來阻止表單提交,如果答案是肯定的/沒有問題,或至少提供錯誤信息正確。是/否單選按鈕的問題(如果選擇「是」,需要阻止提交)

是簡單地增加所需的第一次嘗試=「true」添加到「否」按鈕:

<th valign="top" align="left"> 
    <label for="yesOrNo"> 
     <strong>Are you a bad guy?</strong> 
     <br /> 
     <br /> 
    </label> 
</th> 
<td valign="top"> 
    <label> 
     <input type="radio" name="yesOrNo" id="yesOrNo" value="yes" />Yes</label> 
    <br /> 
    <label> 
     <input type="radio" name="yesOrNo" id="yesOrNo" required="true" value="no" />No</label> 
    <br /> 
    <br /> 
</td> 
</tr> 

那之後沒有用「是」仍然有效,提交完全工作,我試圖使隱藏這是過去爲我工作所需的角度。誠然這個工作了文本字段和數字,我把在一個是 - 否單選按鈕的情況下使用什麼的估計:

<th valign="top" align="left"> 
    <div ng-if="angularYesOrNo=true">You are uneligible for this promotion</div> 
    <label for="yesOrNo"><strong>Are you a bad guy?</strong> 
     <br /> 
     <br /> 
    </label> 
</th> 
<td valign="top"> 
    <label> 
     <input type="radio" name="yesOrNo" ng-model="angularYesOrNo" id="yesOrNo" value="yes" />Yes</label> 
    <br /> 
    <label> 
     <input type="radio" name="yesOrNo" id="yesOrNo" value="no" />No</label> 
    <input type="hidden" name="badGuyFlag" id="badGuyFlag" ng-required='angularYesOrNo=true' /> 
    <br /> 
    <br /> 
</td> 
</tr> 

是否有任何代碼什麼,我需要改變,以使這項工作?或者是否有任何功能需要添加到單獨的腳本標記中?整個下午這一直在困擾着我的大腦。

+0

我不做的角度,但像這樣的香草JS工作:'form1.addEventListener(「提交」, function(){var radios = document.querySelectorAll(「input [type ='radio']」); for(var i = 0; i

回答

0

Working Plunker

看起來你需要定義你的角的Javascript的變量文件是這樣的:

的Javascript

$scope.angularYesOrNo = {bad:undefined}; 

你的NG-if語句需要兩個相等徵兆以評估您的angularYesOrNo變量。

的Html

<div valign="top" align="left"> 
    <div ng-if="angularYesOrNo.bad=='Yes' ">You are uneligible for this promotion</div> 
    <label for="yesOrNo"><strong>Are you a bad guy?</strong> 
    <br /> 
    <br /> 
    </label> 
</div> 
<div valign="top"> 
    <label> 
     <input type="radio" name="yesOrNo" ng-model="angularYesOrNo.bad" id="yesOrNo" value="Yes" /> 
     Yes 
    </label> 
    <br /> 
    <label> 
    <input type="radio" name="yesOrNo" ng-model="angularYesOrNo.bad" id="yesOrNo" value="No" /> 
    No 
    </label> 

    <br /> 
    <br /> 
</div> 
0

您可以使用ng-submit的形式設置在提交之前該驗證表單數據的提交處理程序。

<form name="myForm" novalidate ng-submit="processSubmit()"> 
    <label><input type="radio" name="yesOrNo" ng-model="angularYesOrNo" id="yesOrNo" value="yes" /> Yes</label><br /> 
    <label><input type="radio" name="yesOrNo" ng-model="angularYesOrNo" id="yesOrNo" value="no" /> No</label><br /> 

在你的控制器中定義函數。

$scope.angularYesOrNo = ''; 
$scope.processSubmit = function() { 
    if ($scope.angularYesOrNo == '' || $scope.angularYesOrNo == 'Yes') { 
     // the form should not be submitted 
    } else { 
     // process the form (submit or ajax) 
    } 
}; 

如果要觸發的形式從控制器提交看到https://stackoverflow.com/a/25102791/5509627

相關問題