2017-07-13 101 views
0

在我想要遍歷具有一定數據屬性一些輸入字段我有這樣的代碼之外的變量的值:更改一個jquery函數

<input type="checkbox" name="asdf4faef4are" checked data-something="1" onchange="check()"> 
<input type="checkbox" name="fgrea4g3agere" checked data-something="2" onchange="check()"> 

function check(){ 
    var dont 
    $('input[data-something]').each(function(){ 
    if($(this).attr('checked')=="true"){ 
     dont=true 
    } 
    }); 
    alert(dont) 
} 

但變量dont未填充,因爲它未在函數內部設置。

如何將變量傳遞到外部全局範圍?

我想檢查是否所有的輸入字段都沒有被用戶選中。


更新:我找到了!我的例子工作已經很好,如果我將attr('checked')=="true"更改爲attr('checked')==true不帶引號。但是無論如何,你的答案是更優雅的解決方案。謝謝;)

+0

我澄清我的例子 – rubo77

回答

1

我要檢查,如果所有輸入字段由用戶選中。

在這種情況下,你可以通過使用:checked選擇,並驗證length屬性是0避免循環。試試這個:

$('input[data-something]').change(function() { 
 
    var noneChecked = $('input[data-something]:checked').length == 0; 
 
    
 
    if (noneChecked) 
 
    console.log('No items checked'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" name="asdf4faef4are" checked="true" data-something="1" /> 
 
<input type="checkbox" name="fgrea4g3agere" checked="true" data-something="2" />

1

這是工作代碼。您首先需要初始化變量,其次,當複選框被點擊/更改時調用它。

剛剛看到下面的聲明,並相應地對代碼進行了更改。

我想檢查是否所有的輸入字段都沒有被用戶選中。

function checkAndAlert() { 
 
    if ($('.someclass:checked').length == $('.someclass').length) { 
 
    console.log("All are checked."); 
 
    } else if ($('.someclass:checked').length == 0) { 
 
    console.log("None are checked."); 
 
    } 
 
} 
 

 
$(".someclass").on('change', function() { 
 
    checkAndAlert(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" class="someclass" name="asdf4faef4are" data-something="1"> 
 
<input type="checkbox" class="someclass" name="fgrea4g3agere" data-something="2">

+0

您的第一個版本是更接近我的嘗試,可以回滾,請解釋爲什麼你的工作和我的不是? – rubo77

+0

嗯,我認爲你的要求是檢查是否全部被檢查。如果是的話,這個和以上的解決方案是完美的。 –

+1

我發現了!我的例子工作已經很好,如果我把''true''改成'true' – rubo77

0

它可以幫助你在你的方式..!

$('[type=checkbox]').prop('checked', true) 
 
function check(){ 
 
    var dont 
 
    if($(this).prop('checked') == true){ 
 
    \t $(this).prop('checked', false) 
 
     dont = true; 
 
    } else { 
 
    \t $(this).prop('checked', true) 
 
    \t dont = false; 
 
    } 
 
    alert(dont) 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" name="asdf4faef4are" data-something="1" onchange="check()"> 
 
<input type="checkbox" name="fgrea4g3agere" data-something="2" onchange="check()">