jQuery onclick切换功能

时间:2015-06-19 01:54:12

标签: jquery html zurb-foundation

我有以下基金会切换元素:

<div class="switch radius">
  <input id="x" name="switch-x" type="radio" onclick="$(this).revealProfile('no');"checked>
  <label for="x">No</label>

  <input id="x1" name="switch-x" type="radio" onclick="$(this).revealProfile('yes');">
  <label for="x1">Yes</label>
  <span></span>
</div>

单击时,我想将隐藏字段的输入布尔值从true更改为false:

<input id="real_property_sale_reveal_owner_profile" name="real_property_sale[reveal_owner_profile]" type="hidden" value="false"> 

我已经编写了以下函数来实现这一目标:

$.fn.revealProfile = function(no) {
    $('input#real_property_sale_reveal_owner_profile').val('false');
};
$.fn.revealProfile = function(yes) {
    $('input#real_property_sale_reveal_owner_profile').val('true');
};

但是,只有最后一个功能在单击切换时运行:$.fn.revealProfile = function(yes)而不是在两者之间交替。我哪里错了?

3 个答案:

答案 0 :(得分:2)

更改

$.fn.revealProfile = function(no) {
    $('input#real_property_sale_reveal_owner_profile').val('false');
};
$.fn.revealProfile = function(yes) {
    $('input#real_property_sale_reveal_owner_profile').val('true');
};

$.fn.revealProfile = function(boolYesNo) {
    var valueToSet = false;
    if(boolYesNo == 'yes'){
        valueToSet = true;
    }
    $('input#real_property_sale_reveal_owner_profile').val(valueToSet);
};

上一个函数仅运行的原因是因为您在revealProfile的同一属性prototype上定义了它们,因此它运行了您设置的最新函数。最好通过传递参数来达到上述目的。

答案 1 :(得分:0)

您所做的是定义具有相同名称的2函数,因此使用最后一个函数。你可以试试这个。

$.fn.revealProfile = function(inputVal) {
    var booleanResult = false;
    if (inputVal === 'yes') {
        booleanResult = true;
    }
    $('input#real_property_sale_reveal_owner_profile').val(booleanResult);
};

答案 2 :(得分:0)

我认为你错过了一个空间:

<input id="x" name="switch-x" type="radio" onclick="$(this).revealProfile('no');"checked>

应该是

<input id="x" name="switch-x" type="radio" onclick="$(this).revealProfile('no');" checked>