JS:在文件输入文件select上更改输入的文本(值)

时间:2012-12-17 19:38:52

标签: javascript html forms events input

我已成功创建一个HTML表单,该表单从用户获取文件,并允许为该文件指定名称。我还成功创建了一个javascript函数,可以从上传流中获取文件名,只有名称(没有路径和扩展名)。 问题是,我有点无法改变用于重命名上传的输入,就像我想要的那样。以下是具有两个示范警报的工作功能:

<script type="text/javascript">
function updateInput(val) {
    som = val.split('\\')[val.split('\\').length - 1];
    som = som.split('.')[0];
    alert('Hey 1');
    fileName.value = som;
    alert('Hey 2');
}; </script>

显示“Hey 1”警报,没关系。 “嘿2”实际上是显示! fileName是文件名称的输入的名称 id ,我 DID 尝试使用document.getElementById ('fileName')。value = ...但没有运气。

fileName声明:

<input type="text" runat="server" id="fileName" name="fileName" />

javascript位于此输入下的代码中。 uploadImage输入(文件类型)高于此输入。 (是的,事件被调用,而som获得了我希望它拥有的值)

* 我正在尝试更改input:text元素的值。我会尝试变种。

谢谢你,如果你能帮助的话!

1 个答案:

答案 0 :(得分:2)

据我了解您的问题,下面的代码应该可以正常工作:

<script type="text/javascript">
function updateInput(val) {
    var som = val.split('\\')[val.split('\\').length - 1];
    som = som.split('.')[0];
    alert('Hey 1');
    document.getElementById('<%=fileName.ClientID %>').value = som;
    alert('Hey 2');
}; </script>

由于runat="server",浏览器中元素的ID与您在.aspx文件中看到的ID不同。 HTML元素的ID将类似于CotentPlaceholder1_fileName,因此document.getElementById('fileName')将无法找到它,document.getElementById('fileName').value = son;将引发错误。

fileName.value = som;同样的问题 - 据我所知,你正在尝试使用IE的功能(不确定它是否只是IE的功能,我只是从不使用它,但请记住,有类似的东西)使用元素ID在全局命名空间中创建变量。 ID与fileName不同,因此变量名也不同。

要获得runat="server"元素的ID,就像它将在浏览器中一样,您可以使用服务器端对象的.ClientID属性。

此外,您应该使用var在函数范围内定义变量。像var som = val.split('\\')[val.split('\\').length - 1];一样。这样它在全局范围内(updateInput函数之外)不可见。否则你将来可能会遇到问题