Cách giữ giá trị đã chọn trong danh sách thả xuống sau khi gửi bằng JavaScript

Trong giờ hành chính tối nay, Sheetal đã đặt ra một vấn đề thú vị- vì giải pháp này cũng có thể hữu ích cho những người khác nên tôi muốn ghi lại nó

Sheetal đang hướng đến việc giữ lại tùy chọn đã chọn của trình đơn thả xuống cả khi xác thực không thành công và gửi biểu mẫu thành công [i. e. vượt qua xác nhận]

Điều này rất phức tạp vì có hai cách mà chế độ xem của chúng tôi có thể có quyền truy cập vào dữ liệu biểu mẫu

  1. Qua old nếu xác thực không thành công
  2. Thông qua việc chuyển rõ ràng tới chế độ xem [sử dụng _______________] của việc gửi biểu mẫu đã thành công

Các giải pháp sau đây dành riêng cho danh sách thả xuống, nhưng các nguyên tắc tương tự có thể được áp dụng cho các loại đầu vào biểu mẫu khác

Giải pháp 1 [Xấu]

Giải pháp ban đầu sử dụng toán tử bậc ba lồng nhau [dài dòng và khó phân tích cú pháp]


    Select
    ACT
    SAT

Để hiểu rõ hơn về súp mã này, đây là phần có liên quan ở dạng mở rộng

# If validation failed, we can get activityType using `old`
if[old['activityType'] == 'ACT'] {
    echo 'selected';
# Otherwise, see if $activityType was passed to the view and if it matches this option [ACT]
} elseif[isset[$activityType] && [$activityType == 'ACT']] {
    echo 'selected';
}
else {
    echo '';
}

Giải pháp 2 [Tốt hơn]

Giải pháp cải tiến giúp loại bỏ toán tử bậc ba lồng nhau


    Select
    ACT
    SAT

Một lần nữa, đây là phần có liên quan ở dạng mở rộng

if[[old['activityType'] == 'ACT'] or [isset[$activityType] and $activityType == 'ACT']] {
    echo 'selected';
} else {
    echo '';
}

Giải pháp 3 [Tốt nhất]

Giải pháp tối ưu mà

  1. tận dụng thực tế là phương thức old có thể được chuyển một giá trị mặc định dưới dạng tham số thứ hai và
  2. sử dụng php để hợp lý hóa việc kiểm tra xem liệu
    # If validation failed, we can get activityType using `old`
    if[old['activityType'] == 'ACT'] {
        echo 'selected';
    # Otherwise, see if $activityType was passed to the view and if it matches this option [ACT]
    } elseif[isset[$activityType] && [$activityType == 'ACT']] {
        echo 'selected';
    }
    else {
        echo '';
    }
    0 có được thiết lập hay không


    Select
    ACT
    SAT

tiền thưởng

Nếu trình đơn thả xuống của bạn có nhiều tùy chọn, cuối cùng bạn sẽ lặp lại cùng một dòng mã cho từng tùy chọn, điều này không lý tưởng

Một cách để hợp lý hóa mọi thứ là cung cấp một mảng cho chế độ xem của bạn với các tùy chọn thả xuống, e. g

$activityTypes = ['ACT', 'SAT];

Với dữ liệu có sẵn trong chế độ xem, bạn có thể tạo tùy chọn thả xuống bằng vòng lặp


    Select
    @foreach[$activityTypes as $type]
        {{ $type }}
    @endforeach

Không thực sự cần thiết trong ví dụ này, vì chỉ có hai tùy chọn, nhưng có điều gì đó cần suy nghĩ đối với danh sách thả xuống lớn hơn

Làm cách nào để giữ giá trị biểu mẫu sau khi gửi javascript?

Để giữ các giá trị, bạn phải điền các giá trị trên máy chủ trong khi hiển thị trang . Thông thường, bạn chỉ cần sao chép dữ liệu từ các tham số yêu cầu HTML vào các trường. Lưu câu trả lời này.

Làm cách nào để giữ lại giá trị thả xuống đã chọn trong javascript sau khi làm mới trang?

Bạn có thể sử dụng localStorage để lưu trữ giá trị đã chọn. .
$['#mov_type']. on['change', function[] { // Lưu giá trị vào localStorage localStorage. setItem["mov_type", $[this]. val[]];
$[tài liệu]. sẵn sàng[function[] { if [$['#mov_type']. độ dài] { $['#mov_type']. .
nếu [hiệu suất. dẫn đường. gõ == 1] { bảng điều khiển

Làm cách nào tôi có thể truy cập giá trị mà tôi chọn trong danh sách thả xuống mà không cần gửi yêu cầu đến một trang khác trong PHP?

php $sselected_option=$_POST['option_value']; //Làm những gì bạn cần với giá trị này, sau đó lặp lại những gì bạn muốn . echo "bạn đã chọn tùy chọn với giá trị=$selected_option";

Làm cách nào để giữ nguyên giá trị Danh sách thả xuống sau khi làm mới trang trong MVC?

Bạn chỉ cần kiểm tra xem EnableViewState có được đặt thành true cho tất cả danh sách thả xuống hay không . Bây giờ, tất cả 3 giá trị được chọn của danh sách thả xuống sẽ vẫn được chọn sau khi đăng lại trang [trừ khi bạn chuyển hướng lại cùng một trang khi nhấp vào nút]. "Ngày cập nhật" trên câu hỏi được cập nhật bất cứ khi nào giải pháp được đăng.

Chủ Đề