2011-04-15 21 views
0

我與它的形式,也就是說,我在一個電臺選擇選項切換隱藏的div切換(想想是/否爲選項)清除VAL與布爾

如果選擇是,顯示div和要求字段,否則隱藏div並清除字段(如果他們已經輸入了任何值)。

我可以通過一個布爾標誌的切換功能,做到這一切,除了明確的價值

例子:

$("[name=nameOfElement]").change(function() { 
    var show = $('input[name=nameOfElement]:checked').val() == "true"; 
    $('#hiddenForm').toggle(show); 
    $('#hiddenInput').toggleClass('required',show); 
}); 

有什麼掃清傳遞布爾選項的值?

$("[name=nameOfElement]").change(function() { 
    var show = $('input[name=nameOfElement]:checked').val() == "true"; 
    $('#hiddenForm').toggle(show); 
    $('#hiddenInput').toggleClass('required',show).valClear(show); 
}); 

UPDATE:不找一個插件只是想知道如果我能做到這一點沒有的if/else條件

回答

2

也許

$("[name=nameOfElement]").change(function() { 
var show = $('input[name=nameOfElement]:checked').val() == "true"; 
$('#hiddenForm').toggle(show); 
$('#hiddenInput').toggleClass('required',show).val(show ? $('#hiddenInput').val() : ''); 
}); 
1

你可以添加多個變化的處理程序:

$("[name=nameOfElement]").change(function() { 
    var show = $('input[name=nameOfElement]:checked').val() == "true"; 
    $('#hiddenForm').toggle(show); 
    $('#hiddenInput').toggleClass('required',show); 
}); 
$("[name=nameOfElement]").change(function() { 
    if($('input[name=nameOfElement]:checked').val() == "true") 
     $('#hiddenInput').val(''); 
}); 

但是,這看起來比只使用一個處理程序有條件的我更糟糕。你也可以自己動手的小插件添加一些你的valClear

(function($) { 
    $.fn.clearIf = function(clearIt) { 
     if(clearIt) 
      this.each(function() { $(this).val(''); }); 
     return this; 
    }; 
})(jQuery); 

然後:

$("[name=nameOfElement]").change(function() { 
    var show = $('input[name=nameOfElement]:checked').val() == "true"; 
    $('#hiddenForm').toggle(show); 
    $('#hiddenInput').toggleClass('required',show).clearIf(!show); 
}); 

我會去與羅恩的三元方法,如果我只是在做這在一個地方雖然。