我有以下基金会切换元素:
<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)
而不是在两者之间交替。我哪里错了?
答案 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>