0
我是新來.NET和web開發的一般。我創建了一個表單來收集用戶的評論和/或文件附件。一切工作正常,但我想添加客戶端驗證,但它失敗時,我這樣做。使用Chrome的開發工具,我可以看到JavaScript被執行,但第一條語句失敗,說「無法讀取未定義的屬性值」。如果我刪除runat =「server」屬性,它可以正常工作,但我無法再從後面的代碼中訪問數據。在窗體runat =服務器的Javascript驗證
那麼,我有什麼選擇使JavaScript的工作?或者我正在以錯誤的方式保存數據?
aspx頁面:
<form id="commentForm" name="commentForm" runat="server" enctype="multipart/form-data" method="post" onsubmit="return validateCommentForm()">
<p>Add Comment</p>
<textarea id="Comment" name="Comment" rows="4" class="with-100" runat="server" />
<input id="FileAttachment" type="file" runat="server" />
<input type="submit" id="SaveComment" class="red-button" value="Submit" />
</form>
的javascript:
function validateCommentForm()
{
var x = document.commentForm.Comment.value;
var y = document.commentForm.FileAttachment.value;
if (x == '' && y == '')
{
alert("Either a commment or file must be supplied.");
return false;
}
}
C#:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack == true)
{
if (Comment.Value.Length > 0)
{
Insert.UserComment(Comment.Value);
}
HttpPostedFile UserFileAttachment = Request.Files[0];
if (UserFileAttachment.ContentLength > 0)
{
Insert.FileAttachment(UserFileAttachment);
}
}
}
在此先感謝。
ClientIDMode屬性似乎只是ASP.NET控件的屬性,而不是HTML控件。所以這個解決方案不起作用。此外,我在運行時檢查頁面以獲取生成的ID,將現有的javascript與運行時ID一起使用,但它仍然無效。也許你可以提供一個jQuery解決方案的例子,因爲我不熟悉它。 – Lefka 2014-10-30 12:46:09
呃,對不起。我只是重新檢查,並沒有意識到你沒有使用asp:form標籤。我現在將添加jQuery示例。 – tlbignerd 2014-10-30 15:16:37
我仍然必須檢查元素並獲取運行時生成的名稱,並編輯jQuery函數以使用該名稱,但此解決方案確實有效。謝謝。 – Lefka 2014-10-31 19:58:04