如果我关闭模态,如何重置textarea maxlength。
如果我关闭模态但我的maxlength验证没有重置,我已经清理了我的textarea。
<div class="modal fade" id="Cancel" tabindex="-1" role="dialog" aria-labelledby="Cancel-label" aria-hidden="true">
<div class="modal-dialog" style="top: 100px; width: 325px;">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="Cancel-label">Reason for Disapproval</h4>
</div>
<div class="modal-body">
<p>Reason for disapproval of the item(s). [Required]</p>
@Html.TextArea("Remarks", new {
@placeholder= "100 characters left.",
@required=true,
@style="height:120px; width: 750px;",
@data_bind = "textInput: message.view"
})
<br>
<span data-bind="text: charLeft"></span> characters left.
</div>
<div class="modal-footer">
<button type="submit" name="command" value="Cancel" class="btn btn-primary col-sm-3 pull-left">OK</button>
<button type="button" class="btn btn-default col-sm-3 pull-left" data-dismiss="modal">Close</button>
</div>
</div>
</div>
我有这个敲除maxout
的knockoutjs ko.extenders.maxlength = function (target, maxlength) {
var view = ko.dependentObservable({
read: target,
write: function (value) {
if (value.length <= maxlength) {
target(value);
} else {
view.notifySubscribers(target());
}
}
});
target.view = view;
target.maxlength = maxlength;
return target;
};
function ViewModel() {
this.message = ko.observable('').extend({ maxlength: 100 });
this.charLeft = ko.pureComputed(function () {
return this.message.maxlength - this.message().length;
}, this);
}
ko.applyBindings(new ViewModel());
为了清理我的textarea,我有这个jquery
$('#Cancel').on('hidden.bs.modal', function (e) {
$(this)
.find("input,textarea,select")
.val('')
.end()
.find("input[type=checkbox], input[type=radio]")
.prop("checked", "")
.end();
})
有人可以帮助我。
答案 0 :(得分:1)
每当你编写DOM操作代码时,问问自己为什么你在viewmodel中没有这样做。也许您需要一个自定义绑定处理程序也许你只需要绑定更多的元素。也许你只需要处理你绑定的元素。
你正在倒退:你应该使用message.view
来清除textArea,而不是写入textArea以期清除message.view
。
答案 1 :(得分:1)
使用当前使用.input-group .form-control {
border-left: 0;
border-right: 0;
}
.input-group-addon {
background: #fff;
}
事件的解决方案(如果自定义绑定无法处理,则会很糟糕),您可以通过清除hidden.bs.modal
来实现。
首先,您需要分配message
个实例,例如:
ViewModel
然后在var vm = new ViewModel();
事件中使用它,例如:
hidden.bs.modal
检查工作小提琴here。
但是这不是解决淘汰赛的好方法。如果您不想使用自定义绑定,则只需使用$('#Cancel').on('hidden.bs.modal', function(e) {
vm.message("");
});
绑定即可清除click
。
像: 在ViewModel中添加:
message
修改你的html绑定:
this.clearMessage = function(){
this.message("");
};
小提琴here。