如何在asp.net cshtml文件中获得javascript工作?
我有一个html输入,用于将图片上传到我的ftp,我希望我的JS能够检测我按钮上的更改。 我的cshtml是:如何在asp.net cshtml文件中获得javascript工作?,javascript,c#,asp.net,asp.net-mvc,razor,Javascript,C#,Asp.net,Asp.net Mvc,Razor,我有一个html输入,用于将图片上传到我的ftp,我希望我的JS能够检测我按钮上的更改。 我的cshtml是: @using (Html.BeginForm("UploadFile", "Upload", FormMethod.Post, new { enctype = "multipart/form-data" })) { <input id="uploadFile" placeholder="No file..." disabled="disable
@using (Html.BeginForm("UploadFile", "Upload", FormMethod.Post, new {
enctype = "multipart/form-data" }))
{
<input id="uploadFile" placeholder="No file..." disabled="disabled" />
<div class="fileUpload btn btn-primary">
<span>Browse</span>
<input id="uploadBtn" type="file" class="upload" />
</div>
<input type="submit" title="OK" />
}
@使用(Html.BeginForm(“UploadFile”,“Upload”,FormMethod.Post,new{
enctype=“多部分/表单数据”})
{
浏览
}
我的剧本是
<head>
<script type="text/javascript" language="javascript">
document.getElementById("uploadBtn").onchange = function ()
{
document.getElementById("uploadFile").value = this.value;
};
</script>
</head>
document.getElementById(“uploadBtn”).onchange=function()
{
document.getElementById(“uploadFile”).value=this.value;
};
当我运行代码时,会收到以下消息:
0x800a138f-JavaScript运行时错误:无法获取未定义或空引用的属性“onchange”
我在fiddle中检查了我的html和JS,一切都很好,所以我猜Razor和JS之间存在一些问题。
有什么建议吗 试试这个:
一,
将脚本移动到关闭标记之前,或将其包装在“$(document).ready()同意@StephenMuecke。您的脚本试图在按钮加载到DOM之前访问它。@StephenMuecke虽然我同意,但如果您在
文档中包装代码。就绪
,加载区域将无关紧要。另外,作为对注释的扩展,如果您有大量代码,请将其移动到JS文件并加载,而不是内联脚本在结束正文标记未改变任何内容之前移动我的代码,我收到了完全相同的错误消息。尝试将我的脚本包装到$(document).ready(),错误消息消失,但我的脚本无法工作<代码>$(document).ready(函数(){document.getElementById(“uploadBtn”).onchange=function(){document.getElementById(“uploadFile”).value=this.value;};})代码>我将脚本放在两个标记之间,然后就在结束body标记之前,并从调试器获得相同的消息:不会命中断点。没有与此行关联的调试器目标代码类型的可执行代码…@StephenMuecke。我尝试了你所建议的一切,上面的代码,并将脚本移动到end body标记之前,在head标记之间,移动到.js文件,等等。现在没有错误消息,但我说我有一条警告消息(断点将不会被命中。没有调试器目标代码类型的可执行代码与此行关联…
),但我在另一个工作脚本中得到了相同的警告,因此,这不可能是问题所在。还有其他提示吗?@K.Gabor check no 3No 3效果很好,no 1也很好(我没有注意到代码重复,两个相同ID的按钮导致了问题)。谢谢你们,救了我一天!
<head>
<script type="text/javascript" language="javascript">
$(document).ready(function(){
document.getElementById("uploadBtn").onchange = function ()
{
document.getElementById("uploadFile").value = this.value;
};
});
</script>
</head>
<script type="text/javascript" language="javascript">
$(document).ready(function(){
$('#uploadBtn').on('change', function() {
$("#uploadFile").val($(this).val());
})
}); </script>
$(document).on('change','#uploadBtn' ,function() {
$("#uploadFile").val($(this).val());
});