如何强制用户在javascript提示中输入值

How to force user to input value in javascript prompt?

本文关键字:输入 提示 javascript 何强制 用户      更新时间:2023-09-26

我有这个jquery代码,它将打开一个提示框。但问题是,无论用户是否在中输入值,如果用户单击"确定",它仍然会继续执行代码。是否有强制用户输入值,然后单击"确定,否则他们无法单击"确定按钮"。

这是我尝试过的,但没有成功。

$(function() {
$(".adminapprovepost").click(function(){
var id = $(this).attr("id");
var tag = prompt("you must enter one keyword to approve this post");
if(tag!=null)
{
  $.ajax({
  type: "POST",
  url: "/admin/admin-approve-post.php",
  data: {id:id,tag:tag},
   success: function(){
   }
  });
 $(this).parents(".postrecord").animate({ backgroundColor: "#fbc7c7" }, "fast")
.animate({ opacity: "hide" }, "slow");
}
return false;
});
});

它应该这样工作:

$(function() {
    $(".adminapprovepost").click(function(){
        var id = $(this).attr("id");
        var proceed = true;
        while(proceed) {
            tag = prompt("you must enter one keyword to approve this post");
            if (typeof(tag) == "string") {
                tag = tag.trim()
                if (tag!="")) {
                    proceed = false;
                }
            }
            if (tag===null) {
                proceed = false;
            }
        }
        if(tag!=null)
        {
            $.ajax({
                type: "POST",
                url: "/admin/admin-approve-post.php",
                data: {id:id,tag:tag},
                success: function(){
                }
            });
            $(this).parents(".postrecord").animate({ backgroundColor: "#fbc7c7" }, "fast")
            .animate({ opacity: "hide" }, "slow");
        }
        return false;
    });
});

编辑:现在用户也可以单击"取消"。它终于应该起作用了。(我希望…)

您可以使用以下代码:

    var proceed = false;
    while(!proceed) 
    {
        tag = prompt("Please input the string:");
        if (typeof(tag) == "string") 
        {
            tag = tag.trim();

            if (tag=="")//// no value
            {
                proceed = false;
                alert('Invalid entry!!!');
            }
            else
            {
              proceed=true;
            }
        }
        if (tag===null) ////cancel hits
        {
            proceed = false;
            alert('Approve process cancelled !!!');
            break;
        }
    }
    if(proceed)
    {
      /////put your code here
    }

while循环将继续要求您输入字符串,除非您在提示中点击取消按钮或输入有效的条目。

您的测试是错误的,因为提示会返回类似字符或空字符串的空格(实际上,当用户单击"确定"时会发生这种情况)。我会写:

var tag = prompt("you must enter one keyword to approve this post");
if (tag != null) tag = tag.trim(); // assuming here you really want to do this
if (!tag) { // a non-empty value
  :