我不知道如何命名,但我会尝试描述。
$(document).on('click','.swaction',function(event){
var pdfId = $(this).closest('tr').find('td:first').html(); // Example: 44!F=%7214
var type = $(this).closest('tr').data('type');
var tableId = $(this).closest('table').attr('id');
var currentElement = this;
event.preventDefault();
if( $(currentElement).data('action') === 'get' )
{
window.location.href = "/Printbox.php/ct_form_procesar_escaneos/pdf/get/" + type + "/" + pdfId;
}
if( $(currentElement).data('action') === 'rename' )
{
$(currentElement).closest('tr').find('td:first').html(
'<input id="newPdfName-'+pdfId+'" type="text" name="newPdfName" />'+
'<select id="newPdfType-'+pdfId+'" type="text" name="newPdfType">'+
'<option selected="selected" disabled="disabled" value="">Tipo de Documento</option>'+
'<option value="cp">CP</option>'+
'<option value="tb">TB</option>'+
'</select>');
$('#newPdfName-'+pdfId).val(pdfId); // THIS doesn't work. Field is empty.
$.procesar_escaneos.linksHtml = $(currentElement).parent().html();
$(currentElement).parent().html('<a class="swaction" data-action="save" href="#">Guardar</a> | '
+ '<a class="swaction" data-action="cancel" href="#">Cancelar</a>'); // This line doesn't seem to execute, the buttons/links are not replaced.
}
这适用于数字和字母,但当pdfId
取值为(
,$
等时,网络会中断。
显然这些角色有问题,但我不知道如何逃脱它们。
示例pdfId = 44!F=%7214
答案 0 :(得分:1)
从这个回答:HTML-encoding lost when attribute read from input field
function htmlEncode(value){
//create a in-memory div, set it's inner text(which jQuery automatically encodes)
//then grab the encoded contents back out. The div never exists on the page.
return $('<div/>').text(value).html();
}
function htmlDecode(value){
return $('<div/>').html(value).text();
}
现在用它包装你的pdfIds:
'<input id="newPdfName-'+ htmlEcode(pdfId)+'" type="text" name="newPdfName" />'
请注意,您的属性的名称不是您最初预期的名称,您可能需要与htmlDecode
共舞以确保您的脚本正常运行。
答案 1 :(得分:1)
问题不在于id,而在于jQuery选择,这意味着如果你想保持相同的id而不进行编码,你可以使用它来改变值:
$(document.getElementById('newPdfName-' + pdfId)).val(pdfId)
在这里工作小提琴:http://jsfiddle.net/PmVwz/1/