【问题标题】:JavaScript Prompt Box Cancel Button?JavaScript 提示框取消按钮?
【发布时间】:2011-10-21 05:17:50
【问题描述】:

我有一个 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");
}
}

Cancel 按钮被点击时,表单仍然通过getmessage.php 处理。有什么方法可以让Cancel 按钮不执行任何操作?

编辑:

这里是这个函数的调用方式:

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

    ?>

PHP 脚本链接到:

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

【问题讨论】:

    标签: javascript prompt


    【解决方案1】:

    对于Cancel,提示结果为nullnull != ''(根据ECMA-262 Section 11.9.3)。

    因此,为null 不等式添加一个额外的显式检查:

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

    但是,由于消息是某个字符串或null,并且您只想在它是带有length &gt; 0 的字符串时传递,您也可以这样做:

    if(message) {
    

    这意味着:如果消息是真实的(即不是null 或空字符串,以及其他虚假值),则输入 if 子句。

    【讨论】:

    • 不走运,它仍在发布到数据库中。
    • 试试 'if(message)' 看看效果如何
    • @Pimvdb 小提琴有效,但我的脚本没有 @cheesus if(message) 不起作用。
    • @Jason:如果这两个建议都不起作用而小提琴确实起作用,那么肯定还有其他不正确的地方。
    • @pimvdb 检查最近的编辑,也许你们可以发现另一个错误。
    【解决方案2】:

    是的,我建议的评论确实有效

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

    JSFiddle

    【讨论】:

    • 我知道,但由于某种原因,我的脚本正在将 null 值传递给 php 脚本。
    【解决方案3】:
    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!");
    }
    

    【讨论】:

    • 您能在代码中添加一些解释吗?仅发布代码可能会降低答案的实用性。
    • 对不起....我是新来的,您的语言仍然有问题....但我想帮忙...再次抱歉。
    【解决方案4】:
    var message = prompt('type any...', '');
    if(message+'.' == 'null.')
    {
        alert("you've canceled");
    }
    else
    {
        alert("type ok");
    }
    

    【讨论】:

      【解决方案5】:

      您是否正在使用 Safari?我发现当用户单击取消时,Safari 似乎返回的是空字符串而不是 null。

      请看这里:Safari 5.1 prompt() function and cancel

      【讨论】:

        【解决方案6】:
                        $.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!!!');
                                }
                            }
                        });     
        

        【讨论】:

        • 为厚实道歉,但这如何回答这个问题?
        猜你喜欢
        • 2015-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-09
        • 2011-11-30
        相关资源
        最近更新 更多