2011-08-05 26 views
7

Tôi có một hàm JavaScript như sau:Nút Hủy Nhắc Hộp Nháp JavaScript?

function popup(username) { 
var req = createAjaxObject(); 
var message = prompt("Message:",""); 
if(message != ""){ 
    req.onreadystatechange = function() { 
     if (req.readyState == 4) { 
      alert(req.responseText); 
     } 
    } 
    req.open('POST','getmessage.php',true); 
    req.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
    req.send("username=" + username +"&message="+message); 
} else { 
    alert("Please enter a message"); 
} 
} 

Khi nút Cancel là hit, hình thức vẫn được xử lý qua getmessage.php. Bất kỳ cách nào để có nút Cancel không làm gì?

EDIT:

Dưới đây là cách chức năng này được gọi là:

   <?php 
     mysqlLogin(); 
     $username = $_COOKIE['sqlusername']; 
     $sql = mysql_query("SELECT username FROM `users` WHERE username!='$username'"); 
     if(mysql_num_rows($sql) != 0) { 
      echo "<table class='usertable' align='center'>"; 
      while($row = mysql_fetch_array($sql)){ 
       $username = $row['username']; 
       echo "<tr><td><center>" . $row['username'] . "</center></td><td>&nbsp;&nbsp;<a href='#' onClick=\"popup('$username');\">Send Message</a></td></tr>"; 
      } 
      echo "</table>"; 
     } else { 
      echo "<center>No users found!</center>"; 
     } 

    ?> 

Các PHP kịch bản liên kết của nó để:

<?php 
$id = rand(1,1500); 
$poster = $_POST['username']; 
$message = $_POST['message']; 
$to = $_COOKIE['sqlusername']; 

require('functions.php'); 
mysqlLogin(); 

$sql = mysql_query("INSERT INTO `messages` VALUES ('$id','$message','$to','$poster','')"); 
if($sql){ 
    echo "Message sent!"; 
} else { 
    echo "Woops! Something went wrong."; 
} 
?> 

Trả lời

19

Trong trường hợp của Cancel, dấu nhắc kết quả là nullnull != '' (theo ECMA-262 Mục 11.9.3).

Vì vậy, thêm một kiểm tra rõ ràng thêm cho null bất bình đẳng:

if(message != "" && message !== null) { 

Tuy nhiên, kể từ khi được thông báo là một trong hai số chuỗi hoặc null và bạn chỉ muốn vượt qua khi đó là một chuỗi với length > 0, bạn cũng có thể làm :

if(message) { 

Điều này có nghĩa: nếu thông điệp là truthy (tức là không null hoặc một chuỗi rỗng, trong số các giá trị falsy khác), sau đó nhập nếu khoản.

+0

Không may mắn, nó vẫn được đăng lên cơ sở dữ liệu. – Jason

+0

@ Jason: Fiddle này có phù hợp với bạn không? http://jsfiddle.net/pimvdb/bmxFH/ – pimvdb

+1

Hãy thử 'if (message)' một lần nữa và xem cách bạn truy cập –

2

Yeah, bình luận đề nghị của tôi không làm việc

var message = prompt("Message:",""); 
if(message){ 
    alert("Not working!"); 
} else { 
    alert("Working!"); 
} 

JSFiddle

+0

Tôi biết, nhưng vì lý do nào đó tập lệnh của tôi chuyển giá trị 'null' vào php – Jason

1
var message = prompt("Message:",""); 
if(message){ 
    alert("Message accepted, now i can process my php or script and blablabla!"); 
} else { 
    alert("Cancel Press or Empty Message, do nothing!"); 
} 
+1

Bạn có thể vui lòng thêm một số lời giải thích cho mã này không? Chỉ có một đoạn mã mới có thể làm giảm sự hữu ích của câu trả lời – Ren

+0

Tôi xin lỗi .... tôi mới và tôi vẫn gặp vấn đề với ngôn ngữ của bạn .... tôi muốn giúp đỡ ... xin lỗi lần nữa – Hackerman

0
var message = prompt('type any...', ''); 
if(message+'.' == 'null.') 
{ 
    alert("you've canceled"); 
} 
else 
{ 
    alert("type ok"); 
} 
0
   $.messager.prompt('Save To File', 'FileName:', function(e){ 
        if (e.response!='undefined'){ 
         if (r!="") 
         { 
          alert('Your FileName is:' + r); 
         } 
         else 
         { 
          $.messager.alert('Err...','FileName cannot empty!!!'); 
         } 
        } 
       });  
+1

Xin lỗi vì đã dày nhưng làm thế nào để trả lời câu hỏi này? – kkuilla

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