Javascript 如果所有三个选择框都具有选定值,则页面刷新功能

Javascript 如果所有三个选择框都具有选定值,则页面刷新功能,javascript,jquery,html,Javascript,Jquery,Html,所以我有3个选择框和一个提交按钮。如果在任何选择框中未选择任何值,则单击“提交”按钮时不会发生任何情况。如果在所有3个选择框中都选择了值,则单击提交按钮将以2秒的延迟刷新页面 以下是迄今为止我所拥有的不起作用的东西: HTML 但是我在这里遇到的问题是,如果语句不正确(onload等),就不会定义refresh。我已经四处找了几个小时,找不到什么,或者我做的不对。任何帮助或指导都将不胜感激。您当前的代码存在一些问题: jQuery选择器$(“.select1”和&“.select2”的使用不正

所以我有3个选择框和一个提交按钮。如果在任何选择框中未选择任何值,则单击“提交”按钮时不会发生任何情况。如果在所有3个选择框中都选择了值,则单击提交按钮将以2秒的延迟刷新页面

以下是迄今为止我所拥有的不起作用的东西:

HTML


但是我在这里遇到的问题是,如果语句不正确(onload等),就不会定义refresh。我已经四处找了几个小时,找不到什么,或者我做的不对。任何帮助或指导都将不胜感激。

您当前的代码存在一些问题:

  • jQuery选择器
    $(“.select1”和&“.select2”
    的使用不正确。。
    • jQuery选择器使用类似CSS的选择器文本来收集多个规则
    • 因为要检查的是三个不同的值,所以必须检查每个值 一个
  • 函数
    refresh()
    的作用域和位置不明确且未调用
  • jQuery没有
    .value
    属性,您必须通过jQuery对象的
    .val()
    调用它


函数刷新(){
如果($(“.select1选项:选中”).val()!=“0”&&
$(“.select2选项:已选”).val()!=“0”和
$(“.select3选项:选中”).val()!=“0”){
setTimeOut(函数(){
window.location.reload();
}, 2000 );
}
}

你在某个地方错了

if($(".select1" && ".select2" && ".select3")).value !== "0") {
 function refresh (timeoutPeriod) {
  refresh = setTimeout(function() {
   window.location.reload(true);
  },timeoutPeriod);
 }
}
这行不通。用计算机语言,你需要检查一个条件,然后转到另一个条件

如果所有操作符都是bool,那么您使用的条件将起作用,例如

if((bool1 && bool2 && bool3) {
  /* code executes if all three bools are true!
   */
}
所以你需要的是:

if($('.select1'.val() != '0' && 
     '.select2'.val() != '0' && 
     '.select3'.val() != 0)) {
 function refresh (timeoutPeriod) {
  refresh = setTimeout(function() { 
    window.location.reload(true);
  }, timeoutPeriod);
 }
}
这样,您将首先检查select1,然后选择2,最后一个,如果它们都没有
0
值,则该函数将继续。否则它将保持原样

下面是算法的提琴:

很抱歉,我还有很短的时间祈祷!所以你可以从fiddle获得基本代码:)我已经解释了select如何在那里工作


祝你好运,兄弟。

你想要更优雅的解决方案吗

HTML:


$(“.select1”&&“.select2”&&“.select3”)
–这并不是你所认为的那样……在if语句中定义函数也没有什么意义;除此之外,您没有调用该函数。你真的应该先学习一些JS基础知识。你不需要在选择器中选择
option:selected
。此外,您还需要
!=“0”
,而不是
=
,您应该使用
&&
,而不是
|
。如果所有3项都有选择,Geblord希望重新加载页面。哎呀!谢谢=)我的答案可能是有史以来最容易通过的表格了!:谢谢你的帮助,它对我非常有效,但我使用了代码盗版,因为如果在我的循环中更改类名,它会更有效。
if($(".select1" && ".select2" && ".select3")).value !== "0") {
 function refresh (timeoutPeriod) {
  refresh = setTimeout(function() {
   window.location.reload(true);
  },timeoutPeriod);
 }
}
if((bool1 && bool2 && bool3) {
  /* code executes if all three bools are true!
   */
}
if($('.select1'.val() != '0' && 
     '.select2'.val() != '0' && 
     '.select3'.val() != 0)) {
 function refresh (timeoutPeriod) {
  refresh = setTimeout(function() { 
    window.location.reload(true);
  }, timeoutPeriod);
 }
}
<select class="select1" onchange="handleChange($(this))">
<option value="0">-- Please Select --</option>
<option value="5">Blue</option>
<option value="6">Green</option>
<option value="7">Red</option>
</select>

<select class="select2" onchange="handleChange($(this))">
<option value="0">-- Please Select --</option>
<option value="5">big</option>
<option value="6">small</option>
<option value="7">medium</option>
</select>

<select class="select3" onchange="handleChange($(this))">
<option value="0">-- Please Select --</option>
<option value="5">1</option>
<option value="6">2</option>
<option value="7">3</option>
</select>

<input type="submit" onclick="tryRefresh(2000)">
var selected = 0;
function handleChange($select) {
  $select.val() ? selected++ : selected--;
}

function tryRefresh(delay) {
  if (selected === 3) {
    setTimeout(refresh, delay);
  }
}

function refresh() {
  window.location.reload(true);
}