关闭一个事件的两个功能

时间:2010-06-28 20:46:04

标签: jquery jquery-selectors

我目前有两个输入字段,可以将值“value”切换为true或false。

我想要发生的是当用户点击提交按钮时,我可以为每个输入字段运行if / then语句,并为每个字段传递一个不同的变量,然后将这两个变量合并为一个变量。 / p>

例如。

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 个答案:

答案 0 :(得分:2)

有几种方法可以解决这个问题,例如你可以这样做:

$(":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(',')更改为您想要的任何分隔符。