2012-01-27 45 views
9

Tôi gặp sự cố khi hộp chọn thả xuống không thả xuống (về bản chất là không hoạt động) khi được xem trên thiết bị di động Android. Nó hoạt động tốt trên các trình duyệt máy tính để bàn cũng như trình duyệt ios - đưa lên một bánh xe chọn trên ios và một danh sách lựa chọn thả xuống từ máy tính để bàn.chọn thả xuống không hoạt động trên trình duyệt Android

Mã mẫu là;

<select id = "log_or_norm" autofocus> 
<option value="1">Lognormal</option> 
<option value="2">Normal</option> 
</select> 

Tôi đã thử tìm thấy đề xuất tại; http://youngliferamblings.wordpress.com/2011/08/09/select-dropdown-in-android-webview/

đó là

Các chọn thẻ chỉ không làm việc đôi khi trong Android, đặc biệt là trong một ứng dụng sử dụng webview. Điều này đã khiến tôi phát điên trong một thời gian dài. Sửa chữa chính tôi tìm thấy, ngay cả khi lựa chọn của bạn được chôn sâu trong divs và hàng và những gì bao giờ, là css này:

chọn { hiển thị: hiển thị; -webkit-xuất hiện: văn bản có dấu hiệu bạo dâm; }

Ngoại hình -webkit có thể là trang web duy nhất thực sự cần thiết và đặt nó thành 'hộp danh sách' cũng hoạt động.

Đó là tất cả. Điều này xứng đáng với bài viết của riêng mình.

Nếu không có may mắn ....

Am hy vọng rằng một trong những bậc thầy ở đây có thể cung cấp một giải pháp thanh lịch mà sẽ tránh tôi phải đi xuống các tuyến đường làm cho nút rời rạc cho mỗi tùy chọn. Tôi không e ngại về việc liệu trải nghiệm Android có được một bánh xe chọn tốt hay không, nhưng cần phải có khả năng cho phép người dùng Android chọn một tùy chọn.

Cám ơn bạn trước

+0

Một điều tôi bỏ qua là tôi đang làm điều này bên trong khung iui. Dường như có thể có một vấn đề về iui đang gây ra vấn đề này và tôi đang giúp nhóm dev kết hợp nó. Xem http://code.google.com/p/iui/issues/detail?id=263 – vinomarky

+0

Có thể liên quan: http://wil.to/android-positioning/fixed.html – James

+0

Tôi cũng đang tham gia quá trình này, nhưng chỉ khi tôi đặt chiều rộng hoặc đệm. – spy

Trả lời

0

Hãy thử

getDriver().createElement(By.id("your locator")); 
getDriver().createElement(By.id("your locator")).sendKeys("option Name you want to give"); 
+3

Bạn có thể giải thích điều này đang làm gì không? – drogon

0
var divCreated = false; 
$(document).ready(function() { 
     var value = ""; 
     $("select").each(function (i) { 
       $(this).click(function() { 
         //alert(($(this).is(":focus"))); 
         if (!($(this).is(":focus"))) { 
          if (!divCreated) { 
           $("body").append('<div class="for_select"></div>'); 
           divCreated = true; 
          } 
          $(this).clone().appendTo(".for_select"); 
          open($(this)); 
         } 
        }); 
      }); 

     function open(obj) { 
      var pos = $(obj).offset(); 
      $(".for_select select").css("position", "absolute"); 
      $(".for_select select").css("zIndex", "9999999999999"); 
      var toAdd = $(obj).innerHeight(); 
      $(".for_select select").offset({ 
        top: pos.top + toAdd, 
        left: pos.left 
       }); 
      $(".for_select select").attr("size", ($(obj).children("option").length > 10 ? 10 : $(obj).children("option").length)); 
      $(".for_select select").change(function() { 
        value = $(".for_select select").val(); 
        $(obj).val(value); 

        $(obj).children("option").each(function() { 
          if ($(this).text() == value) 
           $(this).attr("selected", "selected"); 
          else if ($(this).attr("selected")) { 
           $(this).removeAttr("selected"); 
          } 
         }); 
        var parentHeight = $(obj).parent().innerHeight(); 
        $(obj).parent().css("height", parentHeight + "px"); 
        $(obj).parent().css("position", "relative"); 
        $(obj).css("position", "absolute"); 
        $(obj).css("left", "0px"); 
        var prevElementsHeight = 0; 
        var isSelect = false; 
        $(obj).parent().children("*").each(function() { 
          if ($(this) == $(obj)) 
           isSelect = true; 
          if (!isSelect) 
           prevElementsHeight += $(this).innerHeight(); 
         }); 
        $(obj).css("top", (prevElementsHeight/2) + "px"); 
        $(obj).css("zIndex", "9999"); 

        close($(".for_select select")); 
       }); 
     } 

     function close(obj) { 
      $(obj).css("position", "static"); 
      $(obj).attr("size", "1"); 
      $(".for_select").empty(); 
     } 
    }); 
+0

không hoạt động đối với tôi. Cảm ơn các nỗ lực mặc dù. – spy

0

Các giải pháp đã khá đơn giản sau khi tôi chiến đấu này trong nhiều ngày.

Thử gỡ lỗi bằng cách đưa ra lựa chọn từ div lồng nhau cho đến khi bạn tìm thấy div có vấn đề.

Trong trường hợp của tôi, vấn đề là tôi đã bọc tất cả các div dữ liệu-role = "trang" trong div cha (để tải sake trên các thiết bị cấp thấp). Vì lý do nào đó, < Android 2.3 có vấn đề với điều đó.

Các vấn đề liên quan