Две функции от одного события - PullRequest
1 голос
/ 29 июня 2010

В настоящее время у меня есть два поля ввода, которые переключают значение «значение» в значение «истина» или «ложь».

Я хотел бы, чтобы, когда пользователь нажимал кнопку отправки, я мог выполнить инструкцию if / then для каждого поля ввода и передать разные переменные для каждого поля, а затем объединить эти две переменные в одну переменную. 1003 *

Например.

if ($('input#one').is('[value="true"]')) {
        var one = 'opt-in-one'
    } 

    else {
        var one = 'opt-out-one'
    }

if ($('input#two').is('[value="true"]')) {
        var two = 'opt-in-two'
    } 

    else {
        var two = 'opt-out-two'
    }
 var result = one + two;

Это лучшее, что я могу объяснить. Есть идеи, как записать это в функцию одним щелчком мыши?

Редактировать: Вот HTML

<form>

<input type="hidden" name="optin1" id="optin1holder" value="true" />

<input type="hidden" name="optin2" id="optin2holder" value="true" />

<input type="submit" class="button" value="Submit">

</form>

1 Ответ

2 голосов
/ 29 июня 2010

Есть несколько способов решить эту проблему, например, вы можете сделать это следующим образом:

$(":submit").click(function() {
  var result = ($('input#one').val() == 'true' ? 'opt-in-one' : 'opt-out-one')
             + ($('input#two').val() == 'true' ? 'opt-in-two' : 'opt-out-two');
  //do something with result
});

Если вы хотите сказать формат, подобный "out-in-one,opt-out-two", вы можете использовать .map(), например:

$(":submit").click(function() {
  var result = $('input#one, input#two').map(function() {
                return (this.value == 'true' ? 'opt-in-' : 'opt-out-') + this.id;
              }).get().join(',');
  //do something with result
});

Второй подход работает для любого количества входных данных, было бы немного чище, если бы вы дали им класс, тогда вместо 'input#one, input#two' вы могли бы сделать, например, 'input.optinout'. Вы также можете изменить .join(',') на любой желаемый разделитель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...