Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在asp.net cshtml文件中获得javascript工作?_Javascript_C#_Asp.net_Asp.net Mvc_Razor - Fatal编程技术网

如何在asp.net cshtml文件中获得javascript工作?

如何在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

我有一个html输入,用于将图片上传到我的ftp,我希望我的JS能够检测我按钮上的更改。 我的cshtml是:

    @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());
      });