2011-05-23 32 views
19

Tôi có một nút gửi với một onClick:window.location() không làm việc, không mở trang

<div id="messageDiv"> 
<form> 
<textarea name="message" rows="10" cols="20"></textarea></textarea> 
<br /><br /> 
<input type="submit" value="Send" onClick="sendmail()"> 
<input type="reset" value="Reset" name='reset'> 
</form> 
</div> 

sau đó tôi có sendmail của tôi:

function sendmail() 
    { 
     window.location.href = "http://www.rainbowcode.net/index.php/profiles/mail?="+mailid; 
     window.location('http://www.rainbowcode.net/index.php/profiles/mail?='+mailid); 
     //return true; 
    } 

mailid là một biến toàn cầu mà được đặt trong một hàm JS khác và nó chứa giá trị chính xác. Làm thế nào đến window.location không mở trang của tôi?

Nếu tôi tự mở nó với một mailid nó hoạt động tốt ..

+0

tại sao bạn đặt vị trí.href và gọi vị trí làm chức năng? – Nathan

+0

tôi không hiểu? –

+0

Không 'window.location = 'http: //stackoverflow.com/';' work ..? – Marty

Trả lời

49

Đặt vị trí hoạt động tốt, nhưng sau đó biểu mẫu được gửi, sẽ tải lại trang hiện tại để thay thế.

Return sai từ phương pháp này:

function sendmail() { 
    window.location.href = "http://www.rainbowcode.net/index.php/profiles/mail?="+mailid; 
    return false; 
} 

và gửi lại rằng tình trạng trong trường hợp để ngăn chặn nộp:

<input type="submit" value="Send" onclick="return sendmail()"> 
+1

cảm ơn bạn! sự khác biệt giữa trả về true và return false là gì ?? –

+1

@Helloise Smit: Nếu bạn trả về false, nó sẽ dừng hành động mặc định của sự kiện, tức là nhấp vào nút. Trả lại đúng (hoặc không có gì cả) sẽ cho phép nhấp chuột, sẽ gửi biểu mẫu. – Guffa

+0

cảm ơn bạn .. tất cả là tốt chỉ là một điều nữa xin vui lòng: tôi có một textarea với trình mà một người dùng có thể gõ vào một tin nhắn và bấm vào gửi mà sau đó sẽ gọi window.location.href của tôi ... làm thế nào tôi có thể vượt qua trên thư đến cửa sổ mới? hình thức của tôi là một "bài" và id của textarea là "tin nhắn"? cảm ơn bạn –

3

Nếu bạn cần phải mở một cửa sổ mới, bạn nên sử dụng phương pháp window.open(). window.location đề cập đến địa chỉ cửa sổ hiện tại và sẽ chỉ - khi sử dụng window.location.reload() - tải lại cửa sổ CURRENT.

+0

cảm ơn bạn window.open hoạt động, nó sẽ mở ra một cửa sổ mới nhưng tôi muốn có thể nhấp vào mũi tên quay lại và quay lại trang trước, vui lòng –

0

câu trả lời rắn đã nhưng tại sao chống lại hệ thống? Đặc biệt là nếu bạn đã gọi với jquery hoặc onClick - có thể không phải là một sự trở lại inline là quan điểm của tôi - vì vậy thay vào đó bạn chỉ có thể thay đổi hành động trên submit:

document.form.action = 'http://www.rainbowcode.net/index.php'

sau đó bạn có thể chọn bất kỳ của biến dạng nếu bạn cần hoặc bỏ qua nếu không.

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