2012-03-29 73 views
0

试图设置一个标志后,允许处理与否。 JavaScript已经不是为我工作,我想有一个对话框弹出,然后设置一个隐藏的后BOOL 0为取消和1确定。有没有更好的方法来根据确认回报来设置发布价值?我搜索的所有东西都提供了ASP.NET,它是postBack的价值。JavaScript的confirm返回岗位价值?

<form name="delPlayers" method="post" action="deletePlayer.jsp" class="col6 leftpad3 rightpad3"> 
    <input type="hidden" name="confirmed" value="0" /> 
    <select name="playerName"> 
    <% while (results.next()) 
     { 
     out.print("<option value=\""); 
     out.print(results.getString("username")); 
     out.print("\">"); 
     out.print(results.getString("username")); 
     out.print("</option>"); 
     } %> 
    </select> 
    <input type="submit" name="Submit" class="button" value="Submit" onSubmit="return confirmSubmit()" /> 
</form> 

如何我试图检查确认返程和后前设置的值:使用简单的JSP(我知道这是过时的和JSTL比较好这个套件我需要)产生

形式。

<script type="text/javascript"> 
<!-- 
    function confirmSubmit() 
    { 
     var r = confirm("Remove " + document.forms['delPlayers']["playerName"].value + "?"); 
     if (r) 
     document.forms['delPlayers']["confirmed"].value = r; 
     return true ; 
     else 
     return false ; 
    } 
--> 
</script> 
+1

为什么你需要传回服务器是否确认你是否要取消提交事件? – mellamokb 2012-03-29 17:26:09

+0

Humm好点。如果确认被取消,那么将确认提交放入表单标签中会取消它? – LF4 2012-03-29 17:51:58

回答

3

这一部分:

onSubmit="return confirmSubmit()" 

应该出现在<form>标签,而不是<input submit>标签内。就像这样:

<form onSubmit="return confirmSubmit()" name="delPlayers" method="post" action="deletePlayer.jsp" class="col6 leftpad3 rightpad3"> 

[编辑]

您没有得到需要它的工作的原因你的JavaScript结构也没有那么好。我试图改变你的代码弄成这个样子,事情似乎更好:

if (r){ 
    document.forms['delPlayers']["confirmed"].value = r; 
    return true ; 
}else{ 
    return false ; 
} 

请记住,当你写如果内的JavaScript命令总是使用大括号{和}。你不一定要使用它们,但它是一个神的习惯,以避免类似这样无厘头的问题。

技术说明:在JS中,if(condition)没有花brakets {}可与后马上只有1行命令的。在你的情况下,有2个命令,所以“其他”的声明是非法的。这就是为什么你总是应该使用,如果与大括号

if (condition) 
     foo() 
else 
     bar() 

是好的。但是

if (condition) 
     foo() 
     any_extra_command(); 
else 
     bar() 

会导致错误。所以最好的情况是:

if (condition){ 
     foo(); 
     any_extra_command(); 
     ...... 
     anything_you_want_else(); 
}else{ 
     bar() 
} 
+0

是的,我在表格中提供了它,但没有提出确认提示,我只是尝试了不同的东西来恢复它。如果确认对话框取消而不是“ok'd”,我怎样才能取消帖子? – LF4 2012-03-29 17:53:52