나는 한방의 viewModel을 가지고 있으며 jQuery 유효성 검사를 연결하고 있습니다. 값 중 하나 인 code
, 원격 검사가 이미 사용 중인지 확인하고 싶습니다. 문제는 원격 유효성 검사를위한 나의 방법에서, self.code()
호출이 새로운 값 대신 이전 값을 반환한다는 것입니다.넉 아웃 및 jQuery 유효성 검사 원격 : 최신 값을 가져 오지 않음
form.validate({
rules: {
'plandetail-code': {
required: true,
remote: {
url: '/Plans/ValidatePlanCode',
type: 'POST',
data: {
id: self.id(),
code: self.code() //form.find('[name="plandetail-code"]').val()
}
}
},
'plandetail-name': "required"
}
});
관련 HTML : :
<div class="form-group">
<label for="plandetail-code">Code</label>
<input type="text" name="plandetail-code" data-bind="textInput: code" class="form-control" />
</div>
내 컨트롤러 -
내 유효성 검사 코드 (같은 결과주의는 또한 아무 소용이 값을 얻기의 "직접적인"방법을 시도) 액션은 간단하지만, 항상 원래 값으로 이 나온다는 점에 유의하십시오.
[HttpPost]
public string ValidatePlanCode(int? id, string code) {
return _service.ValidatePlanCode(id, code) ? "true" : "false";
}
그리고 여기 내 뷰 모델입니다 :
function PlanDetailVM(model) {
var self = this;
self.originalModel = model;
self.form = $('#pgPlan-plan-detail-form');
self.id = ko.observable(model.ID);
self.active = ko.observable(model.Active);
self.code = ko.observable(model.Code);
self.name = ko.observable(model.Name);
self.notes = ko.observable(model.notes);
self.dirty = ko.computed(function() { return isDirty(); });
self.save = function() { saveChanges(); }
self.cancel = function() { cancelChanges(); }
ko.applyBindings(self, document.getElementById('pgPlan-detail-container'));
initValidation(self.form);
return self;
function initValidation(form) {
form.validate({
rules: {
'plandetail-code': {
required: true,
remote: {
url: '/Plans/ValidatePlanCode',
type: 'POST',
data: {
id: self.id(),
code: self.code() //form.find('[name="plandetail-code"]').text()
}
}
},
'plandetail-name': "required"
}
});
}
function isDirty() { ... }
function saveChanges() {
if (!self.form.valid()) {
return;
}
// ajax snipped
}
function cancelChanges() { ... }
}
생식 : 내가하고 saveChanges
방법에 내가 form.valid()
확인 (물론 이후에하는 것이 퍼팅 시도) 바인딩을 적용하기 전에 form.Validate({})
을 실행
- 로드 초기보기를, 코드 BBBB에 값 AAAA에게
- 변경 코드가
- 컨트롤러 액션 코드라고 컨트롤러 액션을 준수 param = AAAA
텍스트 입력에서 최신 값을 가져올 수없는 이유가 확실하지 않습니다. 내가 놓친 게 있니? 덕분에
거룩한 얼굴 ... 오, 확인 ... 감사합니다. – jleach