2012-10-12 16 views
23

Tôi đang gọi một Javascript window.prompt() và nhắc người dùng gửi một biến mà tôi so sánh với biến khác (bảo vệ mật khẩu rất cơ bản). Tuy nhiên, hàm này hoạt động tốt nếu bạn nhấp vào "cancel" trên cửa sổ prompt(), chức năng này không chỉ đơn giản là chấm dứt, mà là so sánh biến với chuỗi trống, (người dùng đã chọn không gửi bằng cách nhấn "hủy") chức năng tiếp tục với phần else{ }.Dấu nhắc Javascript() - nút hủy để chấm dứt chức năng

Câu hỏi của tôi là, làm cách nào để chấm dứt chức năng khi nhấn hủy? Tôi chỉ cần biết cách nhắm mục tiêu nút hủy.

Thông thường tôi chỉ cần gọi số .stop() trên số click() nút, nhưng tôi không biết cách nhắm mục tiêu nút hủy của cửa sổ nhắc.

+0

sử dụng event.target..it sẽ cung cấp cho bạn tham chiếu phần tử mục tiêu. – Apurv

+0

'prompt' trả về' null' khi nhấn nút hủy. – zzzzBov

Trả lời

53

prompt trả về một chuỗi nếu người dùng nhấn OK ('' không có giá trị được gửi). Nếu người dùng nhấn Cancel, null sẽ được trả lại. Tất cả bạn cần làm là kiểm tra xem giá trị là null:

function doSomething() { 
    var input; 
    input = prompt('Do something?'); 
    if (input === null) { 
     return; //break out of the function early 
    } 
    switch (input) { 
    case 'fun': 
     doFun(); 
     break; 
    case 'boring': 
     beBoring(); 
     break; 
    } 
} 
+0

Tuyệt vời! Cảm ơn một tấn cho sự giúp đỡ của bạn! Lời giải thích của bạn làm cho nó có vẻ rất rõ ràng nó giống như một cái tát trên mặt! Haha. Cảm ơn một lần nữa. :) –

+0

Nếu điều này trả lời câu hỏi của bạn, hãy đảm bảo chọn dấu kiểm bên cạnh câu hỏi để đánh dấu câu trả lời. – zzzzBov

+0

Ok - Tôi là một noobie đến trang web này, vì vậy tôi không biết. –

2

Bạn nên kiểm tra rõ ràng null làm giá trị trả lại (sử dụng ba bằng) và return khi đây là kết quả.

var result = prompt("OK?"); 
if (result === null) { 
    return; 
} 

Điều này cho phép bạn phân biệt với chuỗi trống, được trả lại khi người dùng nhấp vào OK nhưng không nhập nội dung.

+0

Tuyệt vời! Cảm ơn một tấn cho sự giúp đỡ của bạn! Chính xác những gì tôi đang tìm kiếm. Khá đơn giản chết tiệt, thực sự. Tôi hoàn toàn quên về lợi nhuận của 'null'. –

1

Bạn có thể chỉ cần kiểm tra cho

if (prompt_responce == null) 

cho biết nếu nó được đóng lại.

+0

Cảm ơn bạn! –

1

Một vấn đề đáng kể khi xử lý kết quả 'lời nhắc' là Safari (ít nhất phiên bản 9.1.2) trả về "" thay vì null khi "Hủy" được nhấp. Điều này có nghĩa là: if (result == null) return; không hoạt động và bạn không thể phân biệt giữa mục nhập của chuỗi rỗng và hủy.