javascript - 下拉列表没有保存数据的值(value)

标签 javascript html css angularjs

W DrodownList

当我从下拉列表中选择一个值时说“练习列表”并单击保存按钮,然后再次修改该元素我可以看到下拉列表没有保留其选定的值,即“练习列表”。相反,它保留其默认值,即“我的列表”。如何让它在保存数据后保持选定的值?

这是我的 html 代码:

 <select id="{{::prefix}}_Select_Practice" name="FreeTextDrugSchedule" ng-options="option as option.name for option in data.practiceOptions" class="form-control medium" ng-model="data.saveIn" style="margin-bottom: 5px;">
                <option value="" selected="selected">My list</option>
            </select>
<button id="{{::prefix}}_Button_Submit" class="btn btn-primary" ng-click="validations = null; doSubmit()">{{submitVerb}}</button>

这是我的js文件代码:

 $scope.doSubmit = function (dataToSubmit) {
                        $scope.submitted = true;
                        if (dataToSubmit) {

                            if ($scope.data.saveIn) {
                                dataToSubmit.dataToSubmit.saveIn = $scope.data.saveIn;
                            }
                            $scope.data = dataToSubmit.dataToSubmit ? dataToSubmit.dataToSubmit : dataToSubmit;
                        }

                        validateSubmission();

                        // TODO simplify this validation
                        if ($scope.EnterDetailsForm.$invalid || $scope.showEffectiveDateError ||
                            $scope.showEffectiveDateRangeError || ($scope.sigValidations &&
                            $scope.sigValidations.length)
                            || ($scope.data.pharmacy1 && $scope.data.pharmacy1 == $scope.data.pharmacy2)
                            || ($scope.showMDD && (!$scope.data.medication.maximumDailyDose || ($scope.showMDD == 'pd' && !$scope.data.medication.maximumDailyDoseUnit)))
                            || $scope.showProviderError
                            || $scope.showSupervisorError
                            || $scope.drugMinError
                            || $scope.showPrimaryError) {

                            $scope.validations.push({
                                name: 'Invalid Entry',
                                msg: 'Please correct all errors on this form to continue.'
                            });

                            if ($scope.entity == 'Prescription') {
                                $scope.scrollToError = true;
                            }
                        } else if ($scope.entity == 'Prescription' && !validateDuration()) {
                            $scope.$emit('ghostMessage', 'The length of the prescription should not be more than 365 days');
                        } else { //proceed with submission
                            // prepare the data to be submitted to the alert checker
                            var dataToSubmit = prepareDataToSubmit();

                            // validate payload before submit
                            if (dataToSubmit.medication.lastRefillDate && dataToSubmit.medication.startDate && dataToSubmit.medication.lastRefillDate.date < dataToSubmit.medication.startDate.date) {
                                $scope.$emit('ghostMessage', 'Last written date cannot be before start date.');
                            } else if (dataToSubmit.medication.lastRefillDate && dataToSubmit.medication.stopDate && dataToSubmit.medication.lastRefillDate.date > dataToSubmit.medication.stopDate.date) {
                                $scope.$emit('ghostMessage', 'Last written date cannot be after stop date.');
                            } else if (dataToSubmit.medication.diagnoses && dataToSubmit.medication.diagnoses.length == 2 && dataToSubmit.medication.diagnoses[0].code &&
                                dataToSubmit.medication.diagnoses[0].code == dataToSubmit.medication.diagnoses[1].code) {
                                $scope.$emit('ghostMessage', 'You may not specify the same diagnosis code for both primary and secondary diagnoses');
                            } else if ($scope.entity != 'FavoriteRx' && $scope.showDAWGenericWarning && !$scope.formularyCheckedForDAWWarning) {
                                checkFormularyAlertsForDAWWarning(dataToSubmit);
                            } else {
                                $scope.formularyCheckedForDAWWarning = false;

                                // check dose alerts if necessary
                                dataToSubmit.schedules = angular.copy(schedules);
                                if ($scope.entity == 'Prescription' && doseCheckNeeded) {
                                    checkDoseAlerts(dataToSubmit);
                                } else { // done; process submission
                                    $scope.submit({data: dataToSubmit, optionCodes: $scope.optionCodes});
                                    $scope.loading = 0;
                                }
                            }
                        }
                    };

最佳答案

我不太确定您的要求是什么,或者您所说的“保存”数据是什么意思,但我会尽力提供一些帮助。

我不知道 angular.js,但我的建议是将选择包装在一个表单中(我假设你正在做)然后使用 angluar.js 中的 post 值设置值(如果可以的话)去做)。这样,如果您重新加载页面,它将不会加载默认值。此外,如果您只是在选择新选项后检查浏览器中的元素,它不会向您显示已选择新选项(即 selected=""属性仍为默认值)。

关于javascript - 下拉列表没有保存数据的值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38513172/

相关文章:

Javascript for 循环无法正常工作?

Javascript:在 <br> 之前和之后向内容添加元素

html - 列表分为多列

html - 对于大量文件,一种将每个 DOM 节点的计算样式记录到文件的优雅方法?

javascript - Angular 在启用 html5mode 时出现错误 : $rootScope:infdig Infinite $digest Loop

javascript - 需要帮助查找数组中所有数字的总和

javascript - 如何在 jquery 中使两个计数器按钮相互独立?

javascript - 动态生成html和js,生成意外的引用

javascript - anchor 标签显示全链接问题

IE 上的 CSS 视觉错误,带有 wordpress 主题