我有一个自定义指令,它将数字掩码应用于文本输入。所以,我输入的值如下: 999.999.999 。我的问题是我想在提交表单之前将此值更改为 999999999 ,以便向服务器端发送“干净”值。问题是:我如何在mi指令中执行此操作?
我尝试在链接函数中使用以下代码,但是,我有点迷失。
$(_element).parents('form').submit( function() {
//I don't know how to change the input value here...
return true;
});
答案 0 :(得分:2)
使用此:
$(_element).parents('form').submit( function() {
$('input').val().replace('.', '');
return true;
});
这将替换输入的值,要替换的值将为.
,并且要替换的值将不存在。所以你会得到想要的答案!
答案 1 :(得分:1)
简短的回答是你需要设置元素的值,使用(例如)一个简单的RegEx去除点:
var enteredValue = $(_element).val();
$(_element).val(enteredValue.replace(/\./g,''));
然而,与Angular的表单处理集成可能是一个好主意,它具有许多钩子以这种方式处理输入的验证和处理。具体来说,使用Angular的ngModelController的$解析器来处理用户输入的值,并且只允许“好”值进入范围内的模型。您可以在现有的自定义指令中执行此操作,也可以单独执行以下操作:
app.directive('cleanNumber', function() {
return {
require: 'ngModel',
link: function link(scope, iElement, iAttrs, ngModelController) {
ngModelController.$parsers.push(function(val) {
return val.replace(/\./g,'');
});
}
};
});
您可以将其用作属性:
<input type="text" name="number" ng-model="number" clean-number />
然后,您可以使用ngSubmit指令调用函数提交表单:
<form name="myForm" ng-submit="submit()">
...
<button type="submit">Submit!</button>
</form>
然后处理后的值在$scope.number
范围内可用。您可以在my plunkr中看到这一点。