2016-02-17 2 views
-5

Рассмотрим следующий код:JQuery-UI Сортируемый и строка заменить вопрос

$(document).ready(function() { 
    $("tbody").sortable({ 
     handle: 'td:first', 
     opacity: 0.75, 
     helper: function (e, ui) { 
      ui.children().each(function() { 
       $(this).width($(this).width()); 
      }); 
      return ui; 
     }, 
     stop: function (event, ui) { 
      alert("reorder triggered"); 
      // Re-order items based on position in table 
      $(".dragablePager").each(function (index) { 

       $(this).find("input").each(function() { 
        alert(index); 
        alert("old name: " + this.name); 
        oldname = this.name; 
        newname = oldname.replace(/\d+/, index); 
        this.name = newname; 
        alert("new name: " + this.name); 
        alert(newname); 
       }); 
      }); 
     } 
    }); 
}); 

Часть формы я имею дело с выглядит примерно так:

<tbody> 
    <tr class="dragablePager"> 
     <td> 
     </td> 
     <td> 
      <input type="text" name="pagers[0][CellEmail]" value="REDACTED"> 
     </td> 
     <td> 
      <input type="text" name="pagers[0][Message]" value="test 1"> 
     </td> 
    </tr> 
    <tr class="dragablePager"> 
     <td> 
     </td> 
     <td> 
      <input type="text" name="pagers[1][CellEmail]" value="REDACTED"> 
     </td> 
     <td> 
      <input type="text" name="pagers[1][Message]" value="sdfdsfdf"> 
     </td> 
    </tr> 
    <tr class="dragablePager"> 
     <td> 
     </td> 
     <td> 
      <input type="text" name="pagers[2][CellEmail]" value="REDACTED"> 
     </td> 
     <td> 
      <input type="text" name="pagers[2][Message]" value="3247678"> 
     </td> 
    </tr> 

</tbody> 

Что я завязывания сделать это изменение индексов входных элементов на основе их порядка в таблице после того, как пользователь выполнил перетаскивание. Проблема в том, что по какой-то причине очень простой RegEx, который я тестировал с помощью тестера RegEx, отказывается работать. oldname и newname всегда одинаковы.

Я иду с орехами; какого черта я делаю неправильно?

EDIT: Я получаю этот вывод в моей консоли для кода, размещенного в первом комментарии:

0 
old name: pagers[1][CellEmail] 
new name: pagers[1][CellEmail] 
0 
old name: pagers[1][Message] 
new name: pagers[1][Message] 
1 
old name: pagers[2][CellEmail] 
new name: pagers[2][CellEmail] 
1 
old name: pagers[2][Message] 
new name: pagers[2][Message] 
2 
old name: pagers[0][CellEmail] 
new name: pagers[0][CellEmail] 
2 
old name: pagers[0][Message] 
new name: pagers[0][Message] 

Вот код из этого комментария (почти идентичного моего оригинал):

$(document).ready(function() { 
    $("tbody").sortable({ 
    handle: 'td:first', 
    opacity: 0.75, 
    helper: function(e, ui) { 
     ui.children().each(function() { 
     $(this).width($(this).width()); 
     }); 
     return ui; 
    }, 
    stop: function(event, ui) { 
     console.log("reorder triggered"); 
     // Re-order items based on position in table 
     $(".dragablePager").each(function(index) { 

     $(this).find("input").each(function() { 
      console.log(index); 
      console.log("old name: " + this.name); 
      oldname = this.name; 
      newname = oldname.replace(/\d+/, index); 
      console.log("new name: " + newname); 
      this.name = newname; 
     }); 
     }); 
    } 
    }); 
}); 

Как это может случиться? Очевидно, что что-то не так, чтобы получить такой результат.

+0

[Рабочий тон] (https://jsfiddle.net/c5zk24qa/) –

+0

Эта скрипка работает, но я говорю вам, что она НЕ работает на моей фактической странице. также, почему downvotes? У меня есть законная проблема, если она «просто сработала», я бы не разместил здесь. – dmarra

+0

Что мы можем сделать, если оно не работает на вашей странице ..? Вы должны предоставить нам код, необходимый для воспроизведения проблемы. Который у вас нет. Попробуйте опубликовать [mcve] –

ответ

0

Хорошо, я понял. Это было немного глупо. Я создаю JS в строке в Perl, и я забыл избежать \ in регулярного выражения. Оно должно быть:

oldname.replace(/\\d+/, index); 

Просто потому, что это было в heredoc.

Смежные вопросы