【问题标题】:Two functions off one event一个事件的两个功能
【发布时间】:2010-06-29 05:09:08
【问题描述】:

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

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

例如。

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>

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:

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

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

    【讨论】:

    • @Nick - 我实际上有一个名为“value”的值,所以我认为 .val() 不会起作用,因为它总是返回 false。这就是为什么我现在喜欢 [value="true"]
    • @Bruno - .val() 应该返回一个字符串,而不是真/假...你能发布 HTML 标记吗?
    • @Bruno - .val() 将为那些返回字符串 "true",您可以查看/播放我上面的代码和您的标记的测试:jsfiddle.net/sExuE
    • @Nick - 将值更改为“false”仍将返回 opt-in
    • @Bruno - 我没有看到这种行为......这是一个将它们设置为 false 的版本,得到 opt-out:jsfiddle.net/sExuE/1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 2011-02-01
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多