2011-08-05 34 views
7

que tienen una función de JavaScript de la siguiente manera:Botón de aviso de JavaScript Cancelar botón?

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"); 
} 
} 

Cuando se pulsa el botón Cancel, la forma se fija procesada a través getmessage.php. ¿Alguna manera de tener el botón Cancel no hace nada?

EDIT:

Aquí es la forma en que esta función se llama:

   <?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>"; 
     } 

    ?> 

El guión PHP su vinculada a:

<?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."; 
} 
?> 

Respuesta

19

En el caso de Cancel, el símbolo el resultado es null, y null != '' (según ECMA-262 Sección 11.9.3).

Así, añada una comprobación explícita extra para null desigualdad:

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

Sin embargo, puesto que el mensaje es o bien un trozo de cuerda o null y que sólo quieren pasar cuando se trata de una cadena con length > 0, también se puede hacer :

if(message) { 

Esto significa: si el mensaje es Truthy (es decir, no null o una cadena vacía, entre otros valores Falsy), a continuación, introduzca el si cláusula.

+0

No hay suerte, todavía se está publicando en la base de datos. – Jason

+0

@Jason: ¿Funciona este violín para ti? http://jsfiddle.net/pimvdb/bmxFH/ – pimvdb

+1

Prueba 'if (message)' y mira cómo vas –

2

Sí, mi comentario sugerido funciona

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

JSFiddle

+0

Lo sé, pero por alguna razón mi script está pasando el valor 'null' al php script. – 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

¿Puede agregar alguna explicación al código? Publicar solo el código puede restar valor a la utilidad de las respuestas. – Ren

+0

Lo siento ... soy nuevo y todavía tengo problemas con su idioma ... pero Quiero ayudar ... lo siento de nuevo. – 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

Disculpas por ser grueso, pero ¿cómo responde esto a la pregunta? – kkuilla

Cuestiones relacionadas