Jquery .clone()方法不能在IE和Chrome浏览器中工作
Jquery .clone() method does not work in IE and Chrome Browser
我想克隆一个html控件,然后附加到另一个控件。
我写过代码
ko.bindingHandlers.multiFileUpload = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var options = ko.utils.unwrapObservable(valueAccessor()),
controlId = ko.utils.unwrapObservable(options.controlId);
//primaryKey = ko.utils.unwrapObservable(options.primaryKey);
var progressMonitorID = controlId + '-ProgressMonitor';
var progressIndicatorID = controlId + '-ProgressIndicator';
$(element).after('<div id=' + progressMonitorID + ' class="progress progress-striped active">'
+ '<div id=' + progressIndicatorID + ' class="bar" style="width: 0%;"></div>'
//+ '<input type="hidden" id="imageKey_"' + controlId + ' name="imageKey" value=' + primaryKey + '></div>'
+ '</div>');
$('#' + progressMonitorID).hide();
$('#' + progressIndicatorID).hide();
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var options = ko.utils.unwrapObservable(valueAccessor()),
imageKey = ko.utils.unwrapObservable(options.imageKey),
imageForeighKey01 = ko.utils.unwrapObservable(options.imageForeighKey01),
uploadUrl = ko.utils.unwrapObservable(options.uploadUrl),
controlId = ko.utils.unwrapObservable(options.controlId),
refreshUri = ko.utils.unwrapObservable(options.refresh),
formName = ko.utils.unwrapObservable(options.formName);
var progressMonitorID = controlId + '-ProgressMonitor';
var progressIndicatorID = controlId + '-ProgressIndicator';
var formID = controlId + '-form';
var fileInputID = controlId + '-fileInput';
if (uploadUrl) {
$(element).change(function () {
if (element.files.length) {
var $this = $(this),
fileName = $this.val();
// var formData = new FormData($('#' + formName)[0]);
var $form = $('<form enctype="multipart/form-data" id=' + formID + '></form>');
// $form.append('<input id=' + fileInputID + 'name=' + fileInputID + ' type="file" />');
$form.append('<input type="hidden" id="imageKey_"' + controlId + ' name="imageKey" value=' + imageKey + '>');
$form.append('<input type="hidden" id="imageForeignKey_"' + controlId + ' name="imageForeighKey01" value=' + imageForeighKey01 + '>');
$("#" + controlId).clone().appendTo($form);
$form.hide();
$('body').append($form);
var formData = new FormData($($form)[0]);
$.ajax({
url: uploadUrl,
type: 'POST',
// Form data
data: formData,
//Options to tell JQuery not to process data or worry about content-type
cache: false,
contentType: false, //'multipart/form-data',
processData: false,
xhr: function () {
var xhr = new window.XMLHttpRequest();
//Upload progress
xhr.upload.addEventListener("progress", function (evt) {
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total * 100 + "%";
//Do something with upload progress
$('#' + progressMonitorID).show();
$('#' + progressIndicatorID).width(percentComplete);
//alert(percentComplete);
}
}, false);
return xhr;
}
})
.done(function (data, textStatus, jqXHR) {
if (refreshUri) {
//alert("success");
//var path = '../MapView/DownloadMap?ref=' + Math.random();
var path = refreshUri + 'ref=' + Math.random();
options.refresh(path);
}
})
.fail(function (jqxhr, status, errorMsg) { alert("Status : " + status + " Error :" + errorMsg); })
.always(function () {
// alert("complete");
$('#' + progressMonitorID).hide();
$('#' + progressIndicatorID).hide();
$('#' + formID).remove();
});
}
});
}
}
}
和HTML绑定是
<input type="file" tabindex="9"
data-bind="attr: {
id: 'RoadMap' + $index(), name: 'RoadMap' + $index()
},
multiFileUpload: {
controlId: 'RoadMap' + $index(),
formName: 'frmPage3a',
imageKey: StageDetailID,
imageForeighKey01: CourseInfoRoadID,
uploadUrl: '/api/Image/UploadMapFile'
}
" />
这段代码在FireFox浏览器中工作得很好,但在IE和Chrome浏览器中不工作。这里的问题是jquery的.clone()方法。这可能吗?谢谢。
您正在用下划线分配id,这就是为什么不工作。使用两个反斜杠转义元字符。如$("#your''_id")
点击这里查看更多信息
相关文章:
- CORS-服务器端cookie没有保存在chrome浏览器上
- 我想用Javascript网站在开放的Chrome浏览器上执行功能
- Chrome浏览器“;挂起”;同时在循环中执行AJAX请求
- 通过Android Chrome浏览器下载文件
- Angularjs ng-options 问题仅适用于 Chrome 浏览器
- 当页面加载时,使谷歌chrome浏览器成为全屏浏览器
- 使用javascript在chrome浏览器的新选项卡中以程序方式打开URL
- 当代码放在Joomla文章中时,Jquery拖放在Chrome浏览器中无法正常工作
- Chrome浏览器:未从响应标头设置cookie
- Javascript只能在Chrome浏览器中使用,不能在Firefox中使用
- 如何禁用chrome浏览器中的web应用程序
- 我可以禁用Chrome浏览器中的“你已经全屏”通知吗
- 为什么asp按钮的java脚本click()函数在chrome浏览器中不起作用
- 节点检查器无法打开chrome浏览器,引发错误ENOENT
- 如何从Google Chrome浏览器中打开浏览窗口
- JavaScript在新的选项卡中打开,而不是在Chrome浏览器中打开窗口
- 常见页眉页脚的 JavaScript 代码在 Chrome 浏览器中不起作用
- jQuery Slider 在 Android Chrome 浏览器上不起作用
- 检测 Chrome 浏览器窗口的宽度和高度,以防止元素溢出
- 即使它在 Chrome 浏览器上不起作用,也可以单击