C# .NET 和 Javascript 确认
-
18-09-2019 - |
题
我有一个带有 xml 文件上传表单的 C# ASP.NET 网页。当用户单击“上传”时,将弹出一个 JavaScript 确认警报,询问用户“此文件正确吗?”。仅当文件名不包含其他表单字段之一的值时,确认警报才会激活。
结合使用 C# ASP.NET 表单和 javascript 确认警报(如果上传的文件名不符合特定条件就会激活)的最佳方法是什么?
解决方案
我想您将有效字符串的值放入隐藏字段中(您没有提到)。实施 OnClientClick
对于上传按钮:
<asp:button .... OnClientClick="return confirmFileName();"/>
<script type="text/javascript">
function confirmFileName()
{
var f = $("#<%= file1.ClientID %>").val();
var s=$("#<%= hidden1.ClientID %>").attr("value");
if (f.indexOf(s) == -1) {
if (!confirm("Is this correct file?")) {
$("#<%=file1.ClientID %>").focus();
return false;
}
}
return true;
}
</script>
编辑:-关于 <%= file1.ClientID %>
.
这将被文件上传控件的客户端 ID 替换,例如 ctl00$ctl00$cphContentPanel$file1
. 。它使脚本在使用类似的东西方面得到加强 $("input[id$='file1']")
. 。欲了解更多信息,请参阅 戴夫·沃兹的帖子.
其他提示
有没有什么需要用C#做这个页面,这听起来像极本将在客户端来完成。
添加的文件上传控制和一个按钮将的.aspx形式。设置按钮的OnClientClick属性为类似于
OnClientClick = "return myFunction()"
和然后写这样一个JavaScript功能:
function myFunction()
{
// Check other text values here
if (needToConfirm){
return confirm('Are you sure you want to upload?');
}
else return true;
}
确认“myFunction的()”如果你想取消回发返回false(即用户在确认对话框点击“否”)。这将取消回发,如果他们点击“否”。
window.onload = function() {
document.forms[0].onsubmit = function() {
var el = document.getElementById("FileUpload1");
var fileName = el.value;
if(fileName.indexOf("WHATEVER_VALUE") == -1) {
if(!confirm("Is the file correct?")) {
el.focus();
return false;
}
}
return true;
}
}
我不得不实施这种事情在IE和FireFox工作的,因为事件在这些浏览器的工作方式的问题。当我得到了它在其中的一个工作,其他的仍然会造成回发,即使我取消了。
下面就是我们在我们的代码(浏览器测试从别处偷来的)。
if (!window.confirm("Are you sure?"))
{
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
window.event.returnValue = false;
else
e.preventDefault();
}
在除了使用客户端验证,还应该增加一个的CustomValidator提供在服务器端验证。你不能相信用户已启用Javascript,或者该用户没有绕过你的Javascript检查。