2017-06-01 58 views
2

該場景是我需要選擇需要上傳哪種類型的文件。選擇文件類型後(例如XML),文件上傳對話框將打開並僅將所選文件的類型過濾爲XML。與單選按鈕中的其他選項一樣。我需要將單選按鈕中選定的值置於文件上傳的「接受」屬性中。有沒有辦法做到這一點?如何更改單選按鈕上的輸入文件的「接受」值點擊

HTML這裏

<input type="radio" class="selectfileclass" name="file" id="xml" value="xml" />XML<br /> 
<input type="radio" class="selectfileclass" name="file" id="html" value="html" />HTML<br /> 
<input type="radio" class="selectfileclass" name="file" id="json" value="json" />JSON<br /> 

<span class="btn btn-default btn-file btn-primary">Browse<input type="file" id="ImportFile" accept=".xml" data-bind="event: { change: $root.Browse }"></span> 

回答

6

代碼中使用的單選按鈕.change()事件,後設置輸入的值。要設置的「接受」的價值使用.attr().attr("accept", "." + $(this).val())

$('.selectfileclass').change(function() { 
 
    $('#ImportFile').attr("accept", "." + $(this).val()) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="radio" class="selectfileclass" name="file" id="xml" value="xml" />XML<br /> 
 
<input type="radio" class="selectfileclass" name="file" id="html" value="html" />HTML<br /> 
 
<input type="radio" class="selectfileclass" name="file" id="json" value="json" />JSON<br /> 
 

 
<span class="btn btn-default btn-file btn-primary">Browse<input type="file" id="ImportFile" accept=".xml" data-bind="event: { change: $root.Browse }"></span>

如果要選擇多個參數,你將不得不使用一個複選框,而不是廣播。

$('.selectfileclass').click(function() { 
 
    var s = $('.selectfileclass:checked').map(function() { 
 
    return $(this).val() 
 
    }).get().join(",.") 
 
    console.log(s) 
 
    $('#ImportFile').attr("accept", "." + s) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" class="selectfileclass" name="file" id="xml" value="xml" />XML<br /> 
 
<input type="checkbox" class="selectfileclass" name="file" id="html" value="html" />HTML<br /> 
 
<input type="checkbox" class="selectfileclass" name="file" id="json" value="json" />JSON<br /> 
 

 
<span class="btn btn-default btn-file btn-primary">Browse<input type="file" id="ImportFile" accept=".xml" data-bind="event: { change: $root.Browse }"></span>

+0

如何接受在同一對話框多個文件? –

+0

@AnantWaykar看看第二個片段 –

0

你可以嘗試直播活動,對於E.g

$('input[type="radio"]').on('change',function() { 
    $('#ImportFile').attr("accept", "." + $(this).val()) 
    console.log($(this).val()); 
});