0

我不知道如何命名它,但我会尝试描述。

$(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

4

2 回答 2

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以确保您的脚本功能。

于 2013-11-08T15:14:33.033 回答
1

问题不在于 id,而在于 jQuery 选择,这意味着如果您想在不编码的情况下保持相同的 id,您可以使用它来更改值:

 $(document.getElementById('newPdfName-' + pdfId)).val(pdfId)

在这里工作小提琴:http: //jsfiddle.net/PmVwz/1/

于 2013-11-08T15:20:18.723 回答