2017-07-13 71 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()">