2015-11-13 225 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

相关问题