เป็นไปได้หรือไม่ที่จะล้าง<input type='file' />
ค่าควบคุมด้วย jQuery? ฉันได้ลองทำสิ่งต่อไปนี้แล้ว:
$('#control').attr({ value: '' });
แต่มันไม่ทำงาน
เป็นไปได้หรือไม่ที่จะล้าง<input type='file' />
ค่าควบคุมด้วย jQuery? ฉันได้ลองทำสิ่งต่อไปนี้แล้ว:
$('#control').attr({ value: '' });
แต่มันไม่ทำงาน
คำตอบ:
ง่าย: คุณห่อ<form>
รอบองค์ประกอบ, .unwrap()
การตั้งค่าการโทรในแบบฟอร์มแล้วเอารูปแบบการใช้ ไม่เหมือนกับ.clone()
โซลูชันอื่น ๆ ในชุดข้อความนี้คุณจะจบลงด้วยองค์ประกอบเดียวกันในตอนท้าย (รวมถึงคุณสมบัติที่กำหนดเองที่ตั้งค่าไว้)
ผ่านการทดสอบและทำงานใน Opera, Firefox, Safari, Chrome และ IE6 + นอกจากนี้ยังทำงานในประเภทอื่น ๆ type="hidden"
ขององค์ประกอบรูปแบบมีข้อยกเว้นของ
window.reset = function(e) {
e.wrap('<form>').closest('form').get(0).reset();
e.unwrap();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<input id="file" type="file">
<br>
<input id="text" type="text" value="Original">
</form>
<button onclick="reset($('#file'))">Reset file</button>
<button onclick="reset($('#text'))">Reset text</button>
ดังที่ Timo บันทึกไว้ด้านล่างหากคุณมีปุ่มเพื่อเปิดใช้งานการรีเซ็ตฟิลด์ภายใน<form>
คุณจะต้องโทรหา.preventDefault()
เหตุการณ์เพื่อป้องกันไม่<button>
ให้ส่งการเรียกใช้
ไม่ทำงานใน IE 11 เนื่องจากข้อผิดพลาดที่ไม่ได้รวม ข้อความ (ชื่อไฟล์) จะถูกล้างในอินพุต แต่File
รายการจะยังคงมีอยู่
คำตอบด่วน: แทนที่
ในรหัสด้านล่างฉันใช้replaceWith
วิธีการ jQuery เพื่อแทนที่การควบคุมด้วยโคลนของตัวเอง ในกรณีที่คุณมีตัวจัดการใด ๆ ที่ผูกไว้กับเหตุการณ์ในการควบคุมนี้เราจะต้องการรักษาสิ่งเหล่านั้นเช่นกัน ในการทำเช่นนี้เราจะส่งผ่านtrue
เป็นพารามิเตอร์ตัวแรกของclone
วิธีการ
<input type="file" id="control"/>
<button id="clear">Clear</button>
var control = $("#control");
$("#clear").on("click", function () {
control.replaceWith( control = control.clone( true ) );
});
ซอ: http://jsfiddle.net/jonathansampson/dAQVM/
หากการโคลนขณะเก็บรักษาตัวจัดการเหตุการณ์แสดงปัญหาใด ๆ ที่คุณสามารถพิจารณาใช้การมอบหมายเหตุการณ์เพื่อจัดการการคลิกในการควบคุมนี้จากองค์ประกอบหลัก:
$("form").on("focus", "#control", doStuff);
สิ่งนี้จะป้องกันความต้องการตัวจัดการใด ๆ ที่จะถูกโคลนพร้อมกับองค์ประกอบเมื่อตัวควบคุมกำลังถูกรีเฟรช
input.value = null;
Jquery ควรดูแลปัญหาเบราว์เซอร์ข้ามเบราว์เซอร์ / เก่าสำหรับคุณ
สิ่งนี้ใช้ได้กับเบราว์เซอร์สมัยใหม่ที่ฉันทดสอบ: Chromium v25, Firefox v20, Opera v12.14
ใช้ jquery 1.9.1
HTML
<input id="fileopen" type="file" value="" />
<button id="clear">Clear</button>
jquery
$("#clear").click(function () {
$("#fileopen").val("");
});
บน jsfiddle
โซลูชันจาวาสคริปต์ต่อไปนี้ใช้ได้กับฉันในเบราว์เซอร์ที่กล่าวถึงข้างต้น
document.getElementById("clear").addEventListener("click", function () {
document.getElementById("fileopen").value = "";
}, false);
บน jsfiddle
ฉันไม่มีวิธีทดสอบกับ IE แต่ในทางทฤษฎีแล้วสิ่งนี้ควรใช้งานได้ หาก IE นั้นแตกต่างจากรุ่น Javascript ที่ใช้งานไม่ได้เพราะ MS ได้ทำไปในทางที่แตกต่างกันวิธี jquery ควรที่จะจัดการกับคุณสำหรับคุณมิฉะนั้นจะคุ้มค่าที่จะชี้ไปยังทีม jquery พร้อมกับ วิธีการที่ IE ต้องการ (ฉันเห็นคนพูดว่า "สิ่งนี้จะไม่ทำงานบน IE" แต่ไม่มีวานิลลาจาวาสคริปต์ที่จะแสดงว่ามันทำงานบน IE ได้อย่างไร (ควรจะเป็น "คุณลักษณะด้านความปลอดภัย") อาจรายงานว่าเป็นข้อผิดพลาดกับ MS เช่นกัน นับเป็นเช่นนี้) เพื่อให้ได้รับการแก้ไขในรีลีสที่ใหม่กว่า)
เช่นเดียวกับที่กล่าวถึงในคำตอบอื่นโพสต์ในฟอรั่ม jquery
if ($.browser.msie) {
$('#file').replaceWith($('#file').clone());
} else {
$('#file').val('');
}
แต่ jquery ได้ลบการสนับสนุนสำหรับการทดสอบเบราว์เซอร์แล้วjquery.browser
วิธีแก้ปัญหาจาวาสคริปต์นี้ใช้ได้สำหรับฉันมันเป็นวิธีการที่เทียบเท่ากับวิธีjquery.replaceWith
document.getElementById("clear").addEventListener("click", function () {
var fileopen = document.getElementById("fileopen"),
clone = fileopen.cloneNode(true);
fileopen.parentNode.replaceChild(clone, fileopen);
}, false);
บน jsfiddle
สิ่งสำคัญที่ควรทราบก็คือเมธอดcloneNodeจะไม่เก็บตัวจัดการเหตุการณ์ที่เกี่ยวข้อง
ดูตัวอย่างนี้
document.getElementById("fileopen").addEventListener("change", function () {
alert("change");
}, false);
document.getElementById("clear").addEventListener("click", function () {
var fileopen = document.getElementById("fileopen"),
clone = fileopen.cloneNode(true);
fileopen.parentNode.replaceChild(clone, fileopen);
}, false);
บน jsfiddle
แต่jquery.cloneเสนอ[* 1] นี้
$("#fileopen").change(function () {
alert("change");
});
$("#clear").click(function () {
var fileopen = $("#fileopen"),
clone = fileopen.clone(true);
fileopen.replaceWith(clone);
});
บน jsfiddle
[* 1] jquery สามารถทำสิ่งนี้ได้หากเหตุการณ์ถูกเพิ่มเข้ามาโดยวิธีการของ jquery เนื่องจากมันเก็บสำเนาไว้ในjquery.dataมันไม่ทำงานเป็นอย่างอื่นดังนั้นจึงเป็นการโกง / การแก้ไขและหมายความว่าสิ่งต่าง ๆ ไม่ได้ เข้ากันได้ระหว่างวิธีการต่าง ๆ หรือห้องสมุด
document.getElementById("fileopen").addEventListener("change", function () {
alert("change");
}, false);
$("#clear").click(function () {
var fileopen = $("#fileopen"),
clone = fileopen.clone(true);
fileopen.replaceWith(clone);
});
บน jsfiddle
คุณไม่สามารถรับตัวจัดการเหตุการณ์ที่แนบมาโดยตรงจากองค์ประกอบเอง
นี่คือหลักการทั่วไปในวานิลลาจาวาสคริปต์นี่คือวิธีที่ jQuery ที่ห้องสมุดอื่น ๆ ทำกัน (คร่าวๆ)
(function () {
var listeners = [];
function getListeners(node) {
var length = listeners.length,
i = 0,
result = [],
listener;
while (i < length) {
listener = listeners[i];
if (listener.node === node) {
result.push(listener);
}
i += 1;
}
return result;
}
function addEventListener(node, type, handler) {
listeners.push({
"node": node,
"type": type,
"handler": handler
});
node.addEventListener(type, handler, false);
}
function cloneNode(node, deep, withEvents) {
var clone = node.cloneNode(deep),
attached,
length,
evt,
i = 0;
if (withEvents) {
attached = getListeners(node);
if (attached) {
length = attached.length;
while (i < length) {
evt = attached[i];
addEventListener(clone, evt.type, evt.handler);
i += 1;
}
}
}
return clone;
}
addEventListener(document.getElementById("fileopen"), "change", function () {
alert("change");
});
addEventListener(document.getElementById("clear"), "click", function () {
var fileopen = document.getElementById("fileopen"),
clone = cloneNode(fileopen, true, true);
fileopen.parentNode.replaceChild(clone, fileopen);
});
}());
บน jsfiddle
แน่นอนว่า jquery และไลบรารีอื่น ๆ มีวิธีการสนับสนุนอื่น ๆ ที่จำเป็นสำหรับการบำรุงรักษารายการดังกล่าวนี่เป็นเพียงการสาธิต
.val('')
แต่ส่วนใหญ่ที่ มันง่ายกว่าการโคลนนิ่งองค์ประกอบการอัพโหลดหรือการเพิ่มฟอร์มซ้อนกันใช่หรือไม่ +1
.val("")
) ทำงานได้อย่างสมบูรณ์ขอบคุณ ง่ายกว่าการโคลนอินพุตและแทนที่มันด้วย
เพื่อเหตุผลด้านความปลอดภัยที่ชัดเจนคุณไม่สามารถตั้งค่าอินพุตไฟล์ได้แม้จะเป็นสตริงว่าง
สิ่งที่คุณต้องทำคือรีเซ็ตแบบฟอร์มที่เขตข้อมูลหรือหากคุณต้องการรีเซ็ตไฟล์อินพุตของฟอร์มที่มีฟิลด์อื่นให้ใช้สิ่งนี้:
function reset_field (e) {
e.wrap('<form>').parent('form').trigger('reset');
e.unwrap();
}
นี่คือตัวอย่าง: http://jsfiddle.net/v2SZJ/1/
มันใช้งานได้สำหรับฉัน
$("#file").replaceWith($("#file").clone());
http://forum.jquery.com/topic/how-to-clear-a-file-input-in-ie
หวังว่ามันจะช่วย
ใน IE8 พวกเขาสร้างฟิลด์อัปโหลดไฟล์เป็นแบบอ่านอย่างเดียวเพื่อความปลอดภัย ดูโพสต์บล็อกทีม IE :
ในอดีตการควบคุมการอัปโหลดไฟล์ HTML () เป็นแหล่งที่มาของช่องโหว่การเปิดเผยข้อมูลจำนวนมาก เมื่อต้องการแก้ไขปัญหาเหล่านี้ทำการเปลี่ยนแปลงที่สองกับลักษณะการทำงานของตัวควบคุม
เมื่อต้องการบล็อกการโจมตีที่อาศัยการกดแป้น "ขโมย" เพื่อหลอกผู้ใช้อย่างลับ ๆ ล่อๆให้พิมพ์เส้นทางของไฟล์ในเครื่องไปยังตัวควบคุมตอนนี้กล่องแก้ไขเส้นทางไฟล์จะเป็นแบบอ่านอย่างเดียว ผู้ใช้ต้องเลือกไฟล์ที่จะอัพโหลดอย่างชัดเจนโดยใช้กล่องโต้ตอบเรียกดูไฟล์
นอกจากนี้ URL "การรวมเส้นทางในเครื่องเมื่ออัพโหลดไฟล์" URLAction ได้รับการตั้งค่าเป็น "ปิดใช้งาน" สำหรับโซนอินเทอร์เน็ต การเปลี่ยนแปลงนี้ป้องกันการรั่วไหลของข้อมูลระบบไฟล์ในท้องถิ่นที่มีความอ่อนไหวต่ออินเทอร์เน็ต ตัวอย่างเช่นแทนที่จะส่งเส้นทางแบบเต็ม C: \ users \ ericlaw \ เอกสาร \ secret \ image.png ตอนนี้ Internet Explorer 8 จะส่งเฉพาะชื่อไฟล์ image.png
$("#control").val('')
คือทั้งหมดที่คุณต้องการ! ทดสอบกับ Chrome โดยใช้ JQuery 1.11
ผู้ใช้รายอื่นได้ทดสอบใน Firefox เช่นกัน
ฉันติดกับตัวเลือกทั้งหมดที่นี่ นี่คือแฮ็คที่ฉันทำซึ่งใช้งานได้:
<form>
<input type="file">
<button type="reset" id="file_reset" style="display:none">
</form>
และคุณสามารถทริกเกอร์การรีเซ็ตโดยใช้ jQuery ด้วยรหัสที่คล้ายกับสิ่งนี้:
$('#file_reset').trigger('click');
(jsfiddle: http://jsfiddle.net/eCbd6/ )
ฉันลงเอยด้วยสิ่งนี้:
if($.browser.msie || $.browser.webkit){
// doesn't work with opera and FF
$(this).after($(this).clone(true)).remove();
}else{
this.setAttribute('type', 'text');
this.setAttribute('type', 'file');
}
อาจไม่ใช่วิธีที่หรูหราที่สุด แต่ก็ใช้ได้เท่าที่ฉันสามารถบอกได้
ฉันใช้https://github.com/malsup/form/blob/master/jquery.form.jsซึ่งมีฟังก์ชันที่เรียกว่าclearInputs()
ซึ่งเป็น crossbrowser ทดสอบอย่างดีใช้งานง่ายและจัดการปัญหา IE และเขตข้อมูลที่ซ่อนอยู่ หากมีความจำเป็น. อาจเป็นวิธีแก้ปัญหาเพียงเล็กน้อยในการล้างอินพุตไฟล์เท่านั้น แต่หากคุณกำลังจัดการกับการอัพโหลดไฟล์ crossbrowser แนะนำให้ใช้โซลูชันนี้
การใช้งานง่าย:
// ล้างฟิลด์ไฟล์ทั้งหมด: $ ( "การป้อนข้อมูล: ไฟล์") clearInputs ();. // ล้างเขตข้อมูลที่ซ่อนอยู่: $ ( "การป้อนข้อมูล: ไฟล์") clearInputs (จริง). // ล้างข้อมูลเฉพาะ: $ ( "# myfilefield1 # myfilefield2") clearInputs ().
/ ** * ล้างองค์ประกอบของฟอร์มที่เลือก * / $ .fn.clearFields = $ .fn.clearInputs = ฟังก์ชั่น (includeHidden) { var re = / ^ (?: สี | วันที่ | วันที่และเวลา | อีเมล | เดือน | หมายเลข | รหัสผ่าน | ช่วง | ค้นหา | โทร | ข้อความ | เวลา | URL | สัปดาห์) $ / i; // 'ซ่อน' ไม่ได้อยู่ในรายการนี้ กลับ this.each (ฟังก์ชั่น () { var t = this.type, tag = this.tagName.toLowerCase (); if (re.test (t) || tag == 'textarea') { this.value = ''; } อื่นถ้า (t == 'ช่องทำเครื่องหมาย' || t == 'radio') { this.checked = false; } อื่นถ้า (แท็ก == 'เลือก') { this.selectedIndex = -1; } อื่นถ้า (t == "ไฟล์") { if (/MSIE/.test(navigator.userAgent)) { $ (นี้) .replaceWith ($ (นี้) .clone (จริง)); } อื่น { $ (นี้) .val ( ''); } } อื่นถ้า (รวมถึงซ่อน) { // includeHidden สามารถเป็นค่าจริงหรืออาจเป็นสตริงตัวเลือก // ระบุการทดสอบพิเศษ; ตัวอย่างเช่น: // $ ('# myForm'). clearForm ('. special: hidden') // ด้านบนจะล้างอินพุตที่ซ่อนอยู่ซึ่งมีคลาส 'พิเศษ' if ((includeHidden === true && /hidden/.test(t)) || (typeof includeHidden == 'string' && $ (นี่) .is (includeHidden)) this.value = ''; } }); };
ค่าอินพุตไฟล์อ่านได้อย่างเดียว (เพื่อเหตุผลด้านความปลอดภัย) คุณไม่สามารถทำให้มันว่างเปล่าโดยทางโปรแกรม (นอกเหนือจากการเรียกใช้เมธอด reset () ของฟอร์มซึ่งมีขอบเขตที่กว้างกว่าฟิลด์นั้น)
ฉันสามารถทำงานของฉันด้วยรหัสต่อไปนี้:
var input = $("#control");
input.replaceWith(input.val('').clone(true));
ฉันกำลังมองหาวิธีที่ง่ายและสะอาดในการล้างอินพุตไฟล์ HTML คำตอบข้างต้นนั้นยอดเยี่ยม แต่ไม่มีคำตอบใดที่ฉันกำลังมองหาจนกระทั่งฉันเข้ามาในเว็บด้วยวิธีที่ง่ายและสง่างามในการทำ:
var $input = $("#control");
$input.replaceWith($input.val('').clone(true));
ทั้งหมดเครดิตเดินทางไปยังคริส Coyier
// Referneces
var control = $("#control"),
clearBn = $("#clear");
// Setup the clear functionality
clearBn.on("click", function(){
control.replaceWith( control.val('').clone( true ) );
});
// Some bound handlers to preserve when cloning
control.on({
change: function(){ console.log( "Changed" ) },
focus: function(){ console.log( "Focus" ) }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="file" id="control">
<br><br>
<a href="#" id="clear">Clear</a>
.clone()
สิ่งที่ไม่ได้ทำงานในโรงละครโอเปร่า (และอาจอื่น ๆ ) มันเก็บเนื้อหา
วิธีที่ใกล้เคียงที่สุดสำหรับฉันคือโจนาธานมาก่อนหน้านี้ แต่รับรองว่าฟิลด์จะรักษาชื่อคลาสและอื่น ๆ ไว้สำหรับรหัสที่ยุ่งเหยิงในกรณีของฉัน
บางสิ่งเช่นนี้อาจทำงานได้ดี (ขอบคุณ Quentin ด้วย):
function clearInput($source) {
var $form = $('<form>')
var $targ = $source.clone().appendTo($form)
$form[0].reset()
$source.replaceWith($targ)
}
ฉันจัดการเพื่อให้เรื่องนี้ทำงานโดยใช้สิ่งต่อไปนี้ ...
function resetFileElement(ele)
{
ele.val('');
ele.wrap('<form>').parent('form').trigger('reset');
ele.unwrap();
ele.prop('files')[0] = null;
ele.replaceWith(ele.clone());
}
สิ่งนี้ได้รับการทดสอบใน IE10, FF, Chrome & Opera
มีสองประการคือ ...
ยังคงทำงานไม่ถูกต้องใน FF หากคุณรีเฟรชหน้าองค์ประกอบไฟล์จะได้รับการเติมข้อมูลอีกครั้งด้วยไฟล์ที่เลือก การรับข้อมูลนี้จากที่ใดนั้นเกินกว่าฉัน มีอะไรเกี่ยวข้องกับองค์ประกอบอินพุตไฟล์ที่เป็นไปได้ที่ฉันสามารถลองล้างได้
อย่าลืมใช้การมอบหมายในเหตุการณ์ใด ๆ ที่คุณแนบกับองค์ประกอบอินพุตไฟล์ดังนั้นจึงยังคงทำงานได้เมื่อทำการโคลน
สิ่งที่ฉันไม่เข้าใจคือใครในโลกที่คิดว่าไม่อนุญาตให้คุณล้างฟิลด์อินพุตจากการเลือกไฟล์ที่ไม่สามารถยอมรับได้ที่ไม่ถูกต้องเป็นความคิดที่ดี
ตกลงอย่าให้ฉันตั้งค่าแบบไดนามิกดังนั้นฉันจึงไม่สามารถกรองไฟล์จากระบบปฏิบัติการของผู้ใช้ได้ แต่ให้ฉันล้างการเลือกที่ไม่ถูกต้องโดยไม่ต้องรีเซ็ตทั้งฟอร์ม
มันไม่เหมือนกับ 'accept' ทำอะไรอย่างอื่นนอกจากตัวกรอง แต่อย่างใดและใน IE10 มันไม่เข้าใจแม้แต่ชนิด MS Word mime มันเป็นเรื่องตลก!
.pop()
กับอาเรย์ของไฟล์แทนที่จะตั้งเป็นโมฆะ ดูเหมือนว่าจะล้างไฟล์อย่างถูกต้อง
ใน Firefox 40.0.3 ของฉันใช้งานได้กับสิ่งนี้เท่านั้น
$('input[type=file]').val('');
$('input[type=file]').replaceWith($('input[type=file]').clone(true));
มันทำงานได้สำหรับฉันในทุกเบราว์เซอร์
var input = $(this);
var next = this.nextSibling;
var parent = input.parent();
var form = $("<form></form>");
form.append(input);
form[0].reset();
if (next) {
$(next).before(input);
} else {
parent.append(input);
}
ฉันได้ลองใช้เทคนิคส่วนใหญ่ที่ผู้ใช้กล่าวถึง แต่ไม่มีการใช้งานในเบราว์เซอร์ทั้งหมด ie: clone () ไม่ทำงานใน FF สำหรับอินพุตไฟล์ ฉันสิ้นสุดการคัดลอกอินพุตไฟล์ด้วยตนเองจากนั้นแทนที่ต้นฉบับด้วยไฟล์ที่คัดลอก มันทำงานได้ในทุกเบราว์เซอร์
<input type="file" id="fileID" class="aClass" name="aName"/>
var $fileInput=$("#fileID");
var $fileCopy=$("<input type='file' class='"+$fileInput.attr("class")+" id='fileID' name='"+$fileInput.attr("name")+"'/>");
$fileInput.replaceWith($fileCopy);
$("input[type=file]").wrap("<div id='fileWrapper'/>");
$("#fileWrapper").append("<div id='duplicateFile' style='display:none'>"+$("#fileWrapper").html()+"</div>");
$("#fileWrapper").html($("#duplicateFile").html());
ทำให้แบบอะซิงโครนัสและรีเซ็ตหลังจากการกระทำที่ต้องการของปุ่มเสร็จสิ้น
<!-- Html Markup --->
<input id="btn" type="file" value="Button" onchange="function()" />
<script>
//Function
function function(e) {
//input your coding here
//Reset
var controlInput = $("#btn");
controlInput.replaceWith(controlInput = controlInput.val('').clone(true));
}
</script>
function clear() {
var input = document.createElement("input");
input.setAttribute('type', 'file');
input.setAttribute('value', '');
input.setAttribute('id', 'email_attach');
$('#email_attach').replaceWith( input.cloneNode() );
}
มันไม่ทำงานสำหรับฉัน:
$('#Attachment').replaceWith($(this).clone());
or
$('#Attachment').replaceWith($('#Attachment').clone());
ดังนั้นใน asp mvc ฉันใช้คุณสมบัติมีดโกนเพื่อแทนที่ไฟล์อินพุต ตอนแรกสร้างตัวแปรสำหรับสายอักขระการป้อนข้อมูลด้วยรหัสและชื่อแล้วใช้มันเพื่อแสดงในหน้าและแทนที่ด้วยปุ่มรีเซ็ตคลิก:
@{
var attachmentInput = Html.TextBoxFor(c => c.Attachment, new { type = "file" });
}
@attachmentInput
<button type="button" onclick="$('#@(Html.IdFor(p => p.Attachment))').replaceWith('@(attachmentInput)');">--</button>
วิธีง่ายๆคือการเปลี่ยนประเภทอินพุตและเปลี่ยนกลับมาอีกครั้ง
บางสิ่งเช่นนี้
var input = $('#attachments');
input.prop('type', 'text');
input.prop('type', 'file')
คุณสามารถแทนที่ด้วยโคลนอย่างนั้น
var clone = $('#control').clone();
$('#control').replacewith(clone);
แต่โคลนนิ่งนี้มีค่าเหมือนกันดังนั้นคุณก็จะมีความสุขมากกว่านี้
var emtyValue = $('#control').val('');
var clone = emptyValue.clone();
$('#control').replacewith(clone);
มันง่ายมาก ๆ (ใช้ได้กับเบราว์เซอร์ทั้งหมด [ยกเว้นโอเปร่า])
$('input[type=file]').each(function(){
$(this).after($(this).clone(true)).remove();
});
JS Fiddle: http://jsfiddle.net/cw84x/1/
อะไร? ในฟังก์ชันการตรวจสอบของคุณเพียงแค่ใส่
document.onlyform.upload.value="";
สมมติว่าการอัปโหลดเป็นชื่อ:
<input type="file" name="upload" id="csv_doc"/>
ฉันกำลังใช้ JSP ไม่แน่ใจว่ามันสร้างความแตกต่างหรือไม่
ใช้งานได้สำหรับฉันและฉันคิดว่ามันง่ายกว่า
reset()
เป็นเช่นreset2()
เพราะอย่างน้อยใน Chromereset()
ทุกสาขาจะถูกล้างออกถ้ามันเป็น และเพิ่ม event.preventDefault () หลังจากล้างการโทรเพื่อป้องกันการส่ง วิธีนี้:<button onclick="reset2($('#file'));event.preventDefault()">Reset file</button>
. การทำงานเช่น: jsfiddle.net/rPaZQ/23