2014-10-11 57 views
1

我在改變javascript輸入類型時遇到了問題。 當我從隱藏文本更改爲文本是好的,並且正確顯示,但是當我更改爲文件輸入未顯示。將輸入從隱藏更改爲文件

<script type="text/javascript"> 
    function show(x,y) { 
    if (document.getElementById(y).checked) { 
     document.getElementById(x).setAttribute('type', 'file'); 
    } else { 
     document.getElementById(x).setAttribute('type', 'hidden'); 
    } 

} 
</script> 
+0

什麼是努力實現與?文件輸入使用起來相當棘手,因爲它很容易導致安全漏洞。 – 2014-10-11 17:48:19

+0

我正在創建一個小型的PHP應用程序,主要的未來是發送郵件給所有人,所以如果用戶選擇checkboox,他將能夠選擇帶有分號的文件,如果不是,他將只能用手輸入電子郵件。 – mapek 2014-10-11 17:56:40

+0

@mapek你爲什麼要繼續改變你的問題..? – Anujith 2014-10-11 18:15:23

回答

1

試試這個:

function show(x, y) { 
    if (document.getElementById(y).checked) { 
     document.getElementById(x).type = 'text'; 
    } else { 
     document.getElementById(x).type = 'file'; 
    } 
} 

Fiddle1

function show(x, y) { 
    if (document.getElementById(y).checked) { 
     document.getElementById(x).type = 'text'; 
    } else { 
     document.getElementById(x).type = 'hidden'; 
    } 
} 

Fiddle2

Fiddle3

+0

這不是我的問題,這個代碼工作也像我的。我在更改隱藏文件時遇到問題。 – mapek 2014-10-11 18:03:36

+0

鉻不能工作。什麼都沒發生。 – mapek 2014-10-11 18:18:04

+1

是的,[工作](http://jsfiddle.net/at0dvuzt/2/)在38.0.2125.101 m – Anujith 2014-10-11 18:20:46

2

/*JQUERY 
 
function show(x,y){ 
 
$(y).change(function() { 
 
    $("#txtAge").text(this.checked); 
 
    if(this.checked) $(x).attr('type','text') 
 
    else $(x).attr('type','file'); 
 
}); 
 
} 
 
show('#a','#isAgeSelected');*/ 
 
//JAVASCRIPT 
 
function show(x,y,z){ 
 
var typedefault=document.getElementById(x).type; 
 
document.getElementById(y).onchange=function(){ 
 
    document.getElementById('txtAge').innerText=this.checked; 
 
    if(this.checked){ 
 
     document.getElementById(x).type = z; 
 
    } else { 
 
     document.getElementById(x).setAttribute('type',typedefault); 
 
    } 
 
}; 
 
} 
 
show('a','isAgeSelecteda','text'); 
 
show('b','isAgeSelectedb','text'); 
 
show('c','isAgeSelectedc','file'); 
 

 
/* 
 
function supportsFileInput() { 
 
    var dummy = document.createElement("input"); 
 
    dummy.setAttribute("type", "file"); 
 
    return dummy.disabled === false; 
 
} 
 
alert(supportsFileInput()); 
 
*/
<input id="isAgeSelecteda" type="checkbox"> 
 
<input id="isAgeSelectedb" type="checkbox"> 
 
<input id="isAgeSelectedc" type="checkbox"> 
 
<p id="txtAge"></p> 
 
<input type="hidden" id="a"> 
 
<input type="file" id="b"> 
 
<input type="hidden" id="c">

+0

代碼片段?這是什麼時候實施的? :o – 2014-10-11 18:10:36

+0

鉻不能正常工作。什麼都沒發生。 – mapek 2014-10-11 18:18:35

+0

什麼版本?在版本37正在工作 – AvrilAlejandro 2014-10-11 18:25:04

1

下面的代碼應該可以工作。

Javascript代碼

document.getElementById(selector).setAttribute("type","file"); 

jQuery代碼

$(selector).attr('type', 'file'); 

示例代碼

HTML

<input type="checkbox" id="chkTest" onclick="myFunction()"> 
<input type="hidden" id="hdnFld" /> 

Java腳本的

function myFunction() { 
    if(document.getElementById("chkTest").checked) { 
     document.getElementById("hdnFld").setAttribute("type","text"); 
    } else{ 
     document.getElementById("hdnFld").setAttribute("type","file"); 
    }        
}