gpt4 book ai didi

javascript - Jquery,同时,每个: how to test if all :selected is not 0

转载 作者:行者123 更新时间:2023-11-29 16:26:07 24 4
gpt4 key购买 nike

我有一个包含一些选择下拉菜单的表单,我想确保至少有一个将默认值“0”更改为其他内容。但是,我不知道该怎么做。我已经尝试过 .each() 和 while 语句,但两者的行为都不像我预期的那样。

这是 HTML:

<form>
<label>Qty:</label>
<select class="Qty">
<option selected="selected">0</option>
<option>1</option>

</select>
<br />
<label>Qty:</label>
<select class="Qty">
<option selected="selected">0</option>
<option>1</option>
</select>
<br />
<br />
<label>Qty:</label>
<select class="Qty">
<option selected="selected">0</option>
<option>1</option>
</select>
<br />
<a href="#">test</a>
</form>

这是 while 语句:

 $(document).ready(function(){
$('a').click(function(e){
e.preventDefault();
while ($('select > option:selected').val()==0){
alert('hello');

}
});

除非所有选择都设置为 0 以外的值,否则它会陷入一个循环,不断测试选择(因此 hello 警报不断出现)。

我也尝试了每一个。

$('a').click(function(e){
e.preventDefault();
$('select > option:selected').each(function (i) {
if($(this).val()>0) {
alert('okay to proceed');
} else {
alert('nothing found');
}
});
});

这要好一些,但即使在找到真正的答案后它也会继续检查。因此,如果我尝试触发错误消息,它会说一切正常,但仍然会触发错误消息。我还尝试设置一个变量是否有效,但它一直显示为 false:

$('a').click(function(e){
e.preventDefault();
var valid = false;
$('select > option:selected').each(function (i) {
if($(this).val()>0) {
var valid= true;
alert(valid);
}
});
if(valid==true) {
alert(valid);
alert('it works');
} else {
alert(valid);
alert('uh-oh');
}
});

我显然错过了一些东西。对此的任何帮助将不胜感激。

最佳答案

在您第一次尝试 while 语句时,它将继续循环,因为:

$('select > option:selected').val() 将始终 ==0 并且永远不会离开循环。

对于 .each,您可以在通过 return false 找到它时中断循环,如 documentation 中所述。 .

对于最后一个,您在 .each(function() 内声明 var 这意味着它仅在该函数内定义,并且一旦进入下一个函数选择中的 each 将重新定义 var ——一旦退出 .each,就不再声明。

因此,请解决您的最后一个示例:jsfiddle

 $('a').click(function(e){
e.preventDefault();
var found = false;
$('select').each(function(){
if($(this).val()!=0){
found = true;
return false;
}
});
if(found)
{
alert('success');
}
else
{
alert('failed');
}
});

关于javascript - Jquery,同时,每个: how to test if all :selected is not 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6007055/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com