我有这个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;
});
});
答案 0 :(得分: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;
});
});
修改:现在用户也可以点击取消'。它最终应该工作。 (我希望......)
答案 1 :(得分:2)
您可以使用此代码:
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循环将继续询问你的字符串,除非你点击提示中的取消按钮或输入有效的条目。
答案 2 :(得分: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
: