Санитарная обработка имен полей динамических форм в jQuery или JavaScript

0

Я динамически генерирую форму при нажатии кнопки. Я использую легко читаемые строки как метки для некоторых полей, что становится проблемой для таких вещей, как Size (ft) поскольку содержит недопустимые символы, подходящие для имен полей формы. Решение этой конкретной проблемы составляет около 90% от полной, и мое отсутствие понимания регулярных выражений теперь становится препятствием.

Мне нужен быстрый способ преобразования строки из чего-то вроде Size (ft) в нечто вроде Size_ft. Сохранение случая и преобразование пробелов в символы подчеркивания - это все, что я действительно хочу заставить. Недопустимые символы без пробела можно просто отбросить, не нужно заменять на них.

редактировать

Формирование переменной:

var jFormVars = {};
jFormVars[fieldName] = fieldValue;

Сборка формы:

jButton.on('click', function() {
  jDiv.find('form').remove(); // Remove existing form...
  var jForm = $('<form action="path/to" method="post" />').appendTo(jDiv);
  $.each(jFormVars, function(key_i, val_i) {
    $('<input name="'+key_i+'" type="hidden" value="'+val_i+'" />').appendTo(jForm);
  });
  jForm.submit(); // Commented for debug .remove();
});

редактировать

Решение как интегрированное:

var jFormVars = {};
jFormVars[fieldName.replace(/\s+/g, '_').replace(/\W+/g, '')] = fieldValue;
  • 2
    Не могли бы вы показать, что у вас так далеко?
  • 0
    Обновлено, чтобы включить код.
Теги:

1 ответ

1
Лучший ответ

Size (ft) на что-то вроде Size_ft

Вы можете использовать что-то вроде:

var name = "Size (ft)";
name = name.replace(/\s+/g, '_').replace(/\W+/g, '');
  • 0
    Не могли бы вы объяснить, на что я смотрю в вашем ответе? Что выбирают /\s+/g и /\W+/g ?
  • 0
    Неважно, я вижу. Таким образом, /\s+/g выполняет глобальную замену пробела на _ а /\W+/g выполняет глобальную замену на нулевой символ. Спасибо за помощь!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню