我正在使用AngularJS并且有一个我需要POST数据的供应商。提交后,他们会将用户重定向回我的网站。
<form method="post" action="https://api.chargify.com/api/v2/signups">
<input type="hidden" name="secure[api_id]" value="1234" />
<input type="hidden" name="secure[timestamp]" value="1301148971" />
<input type="hidden" name="secure[nonce]" value="5b2763d0-39e1-012e-858d-64b9e8d3946e" />
<input type="hidden" name="secure[data]" value="one=uno&two=dos" />
<input type="hidden" name="secure[signature]" value="412951d095ebbb3800dfb2126fe5073d2ab6c260" />
</form>
See Chargify Direct Signups for more info
他们没有CORS设置,因此我无法使用$ http服务发布数据。看来我必须用老式的形式来做这件事。我遇到了角度验证和预防表单提交的问题。显然是棱角分明ignores the result of the ng-submit when an action attribute is present。
此外,它会阻止默认操作(表单意味着将请求发送到服务器并重新加载当前页面),但前提是表单不包含操作,数据操作或x-action属性。
对于HTML5浏览器验证,验证过于复杂,因此如果数据无效,我确实需要访问以阻止表单提交。我有点坚持这个。这似乎应该是一个容易解决的问题,但到目前为止,一个体面的解决方案已经回避了我。还有其他人解决了这个问题,还是我错过了一些明显的东西?
我做了一个验证简化的plunker来证明这个问题:
答案 0 :(得分:0)
这感觉有点hacky,但我已经在它上面撒了一点jQuery,直到我找到更多的AngularJS解决方案:
$("#billingForm").submit(function(e){
var valid = $scope.billingForm.$valid;
if (valid) {
return true;
}
else {
e.preventDefault();
return false;
}
});