2015-05-05 11 views
5

Tôi đã được trợ giúp ở đây để tổng hợp mã này. Và nó hoạt động hoàn hảo trong Chrome, Safari và trong Internet Explorer. Nhưng trong Firefox nó chuyển hướng đến một tiểu url (có thể là không đúng từ cho nó ...)Làm cách nào để chuyển hướng javascript này hoạt động trong Firefox?

Tôi có kịch bản trên một trang:

http://example.com/test

enter image description here

Và tôi muốn để chuyển hướng đến một trang mới dựa trên giá trị người dùng chọn (và sau đó nhấp vào nút): Vì vậy, nếu tôi chọn tùy chọn # 2 Tôi muốn đến đây: http://example.com/my-test-2

Nó hoạt động trong các trình duyệt khác, nhưng không phải trong Firefox. Trong Firefox, nó chuyển hướng đến: http://example.com/test?redirect=http%3A%2F%2Fexample.com%2Fmy-test-2 mà tất nhiên không dẫn đến bất cứ đâu.

HTML được tải trong môi trường jquery và Bootstrap và tôi sử dụng các phương thức trên trang đó. Tôi chỉ đề cập đến điều này trong trường hợp có một lỗi biết cho Firefox bằng cách sử dụng những framworks đó.

Dưới đây là HTML:

I want to choose: 
<form id="mychoice"> 
    <input type="radio" name="redirect" value="http://example.com/my-test-1"><span>1</span><br> 
    <input type="radio" name="redirect" value="http://example.com/my-test-2"><span>2</span><br> 
    <input type="radio" name="redirect" value="http://example.com/my-test-3"><span>3</span><br> 
    <input type="radio" name="redirect" value="http://example.com/my-test-4"><span>4</span><br> 
    <input type="radio" name="redirect" value="http://example.com/my-test-5"><span>5</span><br /><br /> 
    <input type="submit" value="See result"> 
</form> 

Các javascript:

Here is a fiddle

Bạn có thấy lý do tại sao Firefox cư xử như thế này?

Nếu quan tâm: Tôi làm việc trên máy Mac OSX 10.10.2 với Chrome 42.0.2311.90 (64-bit), Firefox 37.0.2 và Windows 8.1 IE 11.09600.17728

+0

'Bạn có thấy lý do tại sao Firefox cư xử như thế này' Bạn thực sự cần gỡ lỗi mã của bạn sử dụng trình duyệt giao diện điều khiển, điều này sẽ được cố định thực sự thực sự nhanh chóng –

Trả lời

12

Bạn đã sử dụng preventDefault(), nhưng chưa thực sự chuyển số event vào trình xử lý. Cũng lưu ý rằng việc sử dụng window.location.assign() là thực hành tốt hơn. Hãy thử điều này:

$("#mychoice").submit(function(event) { // < 'event' is the parameter passed to the func 
    event.preventDefault(); 
    window.location.assign($('input[name="redirect"]:checked').val()); 
}); 
+0

Cảm ơn bạn?. Tôi chỉ thử nghiệm trong fiddle, và nó đã làm việc ở đó. Sẽ thử nghiệm trên trang web của tôi. Cảm ơn bạn Rory. http://fiddle.jshell.net/Preben/s3pv5t3g/3/ – Preben

+0

Tôi sẽ chỉ xác nhận rằng điều này cũng hoạt động trong trang web của tôi. Tôi sẽ chossese như câu trả lời của tôi, nhưng bây giờ là quá sớm. (Chưa được phép.) – Preben

+0

Không sao, vui lòng giúp đỡ. –

0

bạn gặp lỗi khi không sử dụng JS của mình. Sự kiện biến không được xác định. Hãy thử nó như thế:

$(document).ready(function(){ 
    $("#mychoice").submit(function(event){ 
     event.preventDefault(); 
     var loc = $('input[name="redirect"]:checked').val(); 
     window.location.href = loc; 
     return false;  
    }); 
}); 
Các vấn đề liên quan