我有一個C#ASP.NET網頁,帶有一個xml文件上傳表單。當用戶點擊「上傳」時,會彈出一個javascript確認提示,詢問用戶「這個文件是否正確?」。只有當文件名不包含其他表單域中的值時,纔會激活確認提醒。C#.NET和Javascript確認
如果上傳文件的名稱不符合特定條件,將C#ASP.NET表單和JavaScript確認提醒結合使用的最佳方式是什麼?
我有一個C#ASP.NET網頁,帶有一個xml文件上傳表單。當用戶點擊「上傳」時,會彈出一個javascript確認提示,詢問用戶「這個文件是否正確?」。只有當文件名不包含其他表單域中的值時,纔會激活確認提醒。C#.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']")
這樣的類固醇的腳本。欲瞭解更多信息,請參閱Dave Wards' post。
他也沒有提及使用jQuery ... – 2009-09-28 17:52:34
有人可以解釋一下這些#<%= FileBox.ClientID%>嗎?它必須與C#ID不同於JS ID吧? – Bryan 2009-09-28 18:02:29
@Bryan:你接受了一個你不明白的答案? – 2009-09-28 18:04:09
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;
}
}
用'.focus()'很好用。 – 2009-09-28 17:54:22
你不需要用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,如果你想取消回發(即用戶在確認對話框中點擊「否」)。如果點擊「否」,這將取消回發。
你打我2分鐘我去TEA ['']> – TheVillageIdiot 2009-09-28 17:32:32
行爲分離怎麼樣? – 2009-09-28 21:05:37
由於事件在這些瀏覽器中的工作方式,我在執行這種事情時遇到了問題,無法在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檢查。
你使用什麼web框架? ASP.NET? ASP.NET MVC? – cdmckay 2009-09-28 17:16:06
ASP.NET框架 – Bryan 2009-09-28 17:16:36