У меня возникли проблемы с проверкой элемента <select>
на моей форме. С помощью knockout.js выбрано местоположение, которое затем заполняет точку обслуживания на основании выбранного местоположения. После нажатия кнопки отправки форма подтверждается parsley.jsНеверная проверка <select> Использование parsley.js, заполняемого объектом
Я продолжаю получать «Это значение необходимо». на месте <select>
, когда петрушка пытается проверить форму. Он заполняется в порядке, и значения появляются и текут, возвращаясь к базе данных, как и ожидалось, когда валидация отключена, но когда проверка включена, петля бросает сообщение об ошибке «Это значение требуется». где в раскрывающемся списке «Местоположения» явно указано значение, иначе точка обслуживания не была бы выбрана.
Я новичок в этих библиотеках, но мое предположение связано с тем, что оно заполняется объектом, хотя я не думал, что это будет проблемой, поскольку там все еще есть ценность.
Надеюсь, я предоставил достаточно информации, если вам нужно что-нибудь еще, что я могу предоставить.
Любые идеи были бы высоко оценены!
viewModelLocationAndServicePoint.data()
[
{
"ServicePoints": [
{
"ServicePoint": "ServicePoint1"
}
],
"Location": "Location1"
},
{
"ServicePoints": [
{
"ServicePoint": "ServicePoint1"
},
{
"ServicePoint": "ServicePoint2"
},
{
"ServicePoint": "ServicePoint3"
}
],
"Location": "Location2"
}
]
Популяция наблюдаемых
self.Location = ko.observable(data.Location().Location());
self.ServicePoint = ko.observable(data.ServicePoint());
viewModelTrackFiles Выход
{
"trackfile": {
"Location": {
"ServicePoints": [
{
"ServicePoint": "ServicePoint1"
}
],
"Location": "Location1"
},
"TransactionMode": "",
"ServicePoint": "ServicePoint1",
"Status": "",
"Comments": "",
"Barcode": "",
"BarcodeImageBase64": ""
},
"files": [],
"printneeded": "no",
"TransactionMode": "",
"dispatchmode": false,
"StaffName": "",
"TransactionDate": "2017-02-06T16:29:49.914Z"
}
HTML
<select id="cLocation"
data-parsley-required="true"
data-bind="options: viewModelLocationAndServicePoint.data(),
optionsCaption:'Choose Location',
optionsText: 'Location',
value: trackfile.Location">
</select>
<div data-field-span="1" data-bind="with: trackfile.Location">
<select id="cServicePoint"
data-parsley-required="true"
data-bind="options: ServicePoints,
optionsCaption:'Service Points',
optionsText: 'ServicePoint',
optionsValue: 'ServicePoint',
value: $parent.trackfile.ServicePoint">
</select>
</div>
W Вы используете петрушку? Существует плагин проверки для нокаута, который будет иметь больше смысла, чем я думаю: https://github.com/Knockout-Contrib/Knockout-Validation. Разве вы не используете плагин нокаутного петрушки? https://github.com/gdandar/Knockout-Parsley –
Спасибо, честно говоря, я работаю с тем, что уже было на месте, поэтому я не знаю, почему :) Я почти уверен, что это просто петрушка, а не нокаут - петрушка. Я рассмотрю их, поскольку я могу изменить то, что используется, однако для этого потребуется большое обновление, поскольку оно используется повсеместно. В то время как в идеале мне нужно быстрое решение, чтобы исправить это, если это вообще возможно. – ASindleMouat
Я вижу. нормально ли «значение» указывает на родителя? Вы уверены, что это возвращает ненулевое значение? ('значение: $ parent.trackfile.ServicePoint" ') –