2015-02-09 67 views
1

我想在使用輸入類型文件時更改輸入類型文本值。我試過下面的代碼,但我仍然無法弄清楚如何處理這個問題。從輸入類型文件中獲取值

HTML:

<input type="text" name="imagem" class="filename" value="<?php echo htmlentities($row_dados['imagem'], ENT_COMPAT, 'utf-8'); ?>" size="32" readonly /> 

<input type="file" name="id_imagem"> 

JS:

$('input[type="file"]').on('change', function (event, files, label) { 
var file_name = this.value.replace(/\\/g, '/').replace(/.*\//, '') 
$('input[type="text"].filename').value(file_name); 
}); 
+0

要設置的文字,其價值? – 2015-02-09 12:05:23

+0

我糾正了代碼上的一些錯誤,但仍然無法正常工作。我想要做的是創建輸入文件的值,並使其顯示在輸入文本中,輸入文本正在創建的值來自數據庫mysql – 2015-02-09 12:10:55

+0

您不能,值是隻讀的。還讀取'type =「file」'的值是有限的。你只會得到一個「fakepath/filename.ext」。 – Teemu 2015-02-09 12:11:24

回答

0

小心,jQuery使用 「VAL()」 方法來訪問的輸入值。

我猜你在控制檯一些錯誤與您腳本..

嘗試用

$('input[type="file"].filename').val(file_name); 

在同樣的方式,更好地獲取文件值與下面的代碼:

var file_name = $(this).val().replace(/\\/g, '/').replace(/.*\//, '') 
+0

哦它的工作,謝謝:P – 2015-02-09 12:16:59

0

如果你正在嘗試更改文本字段值,爲什麼你要定位文件值?

代碼將是這樣的:

/* Let's bind it just for the id_imagem, not the all input[type="file"] */ 
$('#id_imagem').bind 
(
    'change', 
    function(e) 
    { 
     /* Supposing your fields are inside a <form>, this notation will work */ 
     this.form.elements['imagem'].value = this.value.replace(/\\/g, '/').replace(/.*\//, ''); 
     return true; 
    } 
);