2015-04-01 56 views
0

我有这个jQuery代码,它会打开一个提示框。但问题是用户是否输入值,如果用户单击确定,它仍会继续执行代码。无论如何强制用户输入值,然后点击确定,否则他们不能点击确定按钮。如何强制用户在javascript提示符下输入值?

这是我试过的,但我没有工作。

$(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; 
}); 
}); 
+3

'var tag = null; while(!tag){tag = prompt(“...”)。trim(); }' – CompuChip 2015-04-01 17:27:09

+0

使用jQuery UI模式对话框代替这个,只能在Chrome中停止,如果用户不想停留 – mplungjan 2015-04-01 17:38:57

+0

'tag = prompt(“...”)。trim();'当用户点击取消时不起作用,因为那么返回null。而'null'不能被修剪。 – dayoda 2015-04-01 18:22:34

回答

2

它应该是这样的:

$(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; 
    }); 
}); 

编辑:现在,用户也可以点击 '取消'。它最终应该工作。 (我希望...)

+0

问题是我无法点击取消按钮来退出脚本? – 2015-04-01 17:43:36

+0

如果我点击取消,我得到这个错误:TypeError:prompt(...)为空。如何预防这个请? – 2015-04-01 17:48:58

+0

改变它,但仍然得到这个错误:TypeError:提示(...)为空...当我点击取消 – 2015-04-01 17:53:56

0

您的测试是错误的,因为我的及时归还类空字符或空字符串(当用户只要点击就OK了,实际上发生)。我会写:

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 
    : 
1

您可以使用此代码:

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循环将继续问你的字符串,除非遇到特别提示中的取消按钮或放一个有效的条目。

+0

while循环会继续询问您的字符串,除非您在提示中点击取消按钮或输入有效的条目 – 2015-12-06 11:01:19