我使用AsyncFileUpload
控件上传图片。
在UploadedComplete
上我尝试使用ScriptManager.RegisterClientScriptBlock
为隐藏字段指定一些值。
HTML:
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" CombineScripts="false">
</asp:ToolkitScriptManager>
<div>
<asp:AsyncFileUpload ID="uplImage" OnUploadedComplete="uplImage_UploadedComplete"
runat="server" Width="285px" ClientIDMode="AutoID" EnableViewState="false" />
<asp:HiddenField runat="server" ID="hdnTempImgNm" />
<input type="button" id="btnCheck" value="Check" class="btnCheck" />
</div>
事件处理程序:
protected void uplImage_UploadedComplete(object sender, EventArgs args)
{
//1 case:
//ScriptManager.RegisterClientScriptBlock(uplImage, uplImage.GetType
// (), "myscript",
//String.Concat(" $(document).ready(function(){$('input:hidden
// [name*=\"hdnTempImgNm\"]').val('Some value');})"),true);
//2 case:
ScriptManager.RegisterClientScriptBlock(uplImage, uplImage.GetType
(), "myscript",
String.Concat("top.document.getElementById('" + hdnTempImgNm.ClientID
+ "').value='Some value'; "),true);
}
的javascript:
<script>
$(document).ready(function () {
$('.btnCheck').click(function (e) {
alert($('input:hidden[name*="hdnTempImgNm"]').val());
});
})
</script>
在我点击“检查”按钮检查隐藏字段值的情况下,我得到一个空值。但在我使用top.document
的2个案例中,我得到了正确的值,即“某些值”。
我的问题是: 1.为什么1例不起作用? 2.如何使用jquery重写2个案例(即如何编写top.document)?
谢谢
答案 0 :(得分:0)
第一种情况:这是因为您的隐藏字段尚未加载。 所以不要写
$(document).ready(function () {
//your code
}
if you write
function pageLoad(){
//you will find hidden field
}
答案 1 :(得分:0)
AsyncFileUpload正在使用iframe。因为在这种情况下只有top.document可以工作。 请参见链接http://www.mikeborozdin.com/post/AJAX-File-Upload-in-ASPNET-with-the-AsyncFileUpload-Control.aspx
所以第一种情况应该是这样的
ScriptManager.RegisterClientScriptBlock(uplImage,uplImage.GetType(),“myscript”,String.Concat(“$(document).ready(function(){$('input:hidden [name * = \”hdnTempImgNm \“ ]',window.parent.document).val(\“Some value \”);})“),true);