JQuery 在新的 Google 个站点中
JQuery in New Google Sites
我对 VBA 以外的任何编码都是新手,我相信它会显示出来!我被卡住了,我想我遗漏了一些明显的东西。
我正在尝试做的事情: 此代码将嵌入新的 Google 站点页面(是的,非常有限)。它显示了一堆复选框;用户选择一个或多个选项,然后单击一个按钮。单击该按钮可打开几个新页面之一,具体取决于选中的 box/boxes。所有这些都有效。
我想将选中的框数限制为每列 2 个。 (后来我希望将它限制为后两列的 1/列,但现在我根本无法限制它。)我无法做到这一点。我正在尝试的不会干扰其余代码,但它仍然允许无限制检查。
我在下面包含了一个虚拟脚本;真实的脚本有其他选择选项和 URL 结果,加上更多样式细节,但除此之外与此匹配。
我试过的方法: 代码的 JQuery 位是从网上某人那里得到的,但我遵循逻辑。我试过 运行 该部分的代码包含在整体的不同部分;我不确定它应该去哪里,但没有任何效果。
我想知道 (1) 我的语法是否有问题,或者 (2) 我如何 calling/structuring 其余代码的 JQuery 部分。我在 FWIW Chrome 中执行此操作。
谢谢——非常感谢您的帮助!
简化的示例代码:
<head>
<meta name="scheduler" content="width=device-width, initial-scale=1">
<style>
body {font-family:arial; background-color:white; line-height: 1.15;}
/*Handles schedule options button - how it looks, what it does when hovered over*/
#schedbutton{
background-color:#f8b019;
}
/*Columns: 3 equal*/
.column{
float: left;
width: 33.33%;
.padding: 10px;
}
.row:after{
content: "";
display: table;
clear: both;
}
/*Responsive layout - columns will stack for narrow screens*/
@media screen and (max-width: 600px) {
.column {
width: 100%;
}
}
</style>
</head>
<body>
<h1>Schedule SME Phone Support</h1>
<p><b>Directions:</b> Directions will go here.</p>
<!--divides the rest into columns-->
<div class="row">
<div class="column" style="background-color:white;">
<h2>Support Group A</h2>
<p>Choose one or two main topics.</p>
<form action="/action_page.php" method="get">
<input type="checkbox" id="apple"> Apple<br>
<input type="checkbox" id="asteroid"> Asteroid<br>
<input type="checkbox" id="ambulance"> Ambulance<br>
<input type="checkbox" id="animal"> Animal<br>
<input type="checkbox" id="allergy"> Allergy<br>
</form>
</div>
<div class="column" style="background-color:white"> <!--2nd column-->
<h2>Support Group B</h2>
<p>Choose one main topic.</p>
<form action="/action_page.php" method="get">
<input type="checkbox" id="brains">Brains<br>
<input type="checkbox" id="brawn">Brawn<br>
<input type="checkbox" id="bluetooth">Bluetooth<br>
</form>
</div>
<div class="column" style="background-color:white;"><!--3rd column-->
<h2>Support Group C</h2>
<p>Choose one main topic.</p>
<form action="/action_page.php" method="get">
<input type="checkbox" id="cake">Cake<br>
<input type="checkbox" id="canvas">Canvas<br>
<input type="checkbox" id="copper">Copper<br>
</form>
</div>
<!--Button to click, which triggers script based on form selections-->
<br>
<button id=schedbutton onclick="myFunction()">See Scheduling Options</button>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
/*for some reason, still cannot make this work*/
/*testing to try and limit number of ckboxes per group checked*/
$('.column:checkbox').change(function () {
var $cs = $(this).closest('.column').find(':checkbox:checked');
if ($cs.length > 2) {
this.checked = false;
}
});
</script>
<!--Script to make the button actually do what we want-->
<script type="text/javascript">
function myFunction(){
/*NB: can't make alert boxes work in New Google Sites, possibly due to iframe limitations?*/
/*Anyhow: if there IS a way to make them work, use that as the fallback instead of a separate "nope" page.*/
if (document.getElementById("apple").checked == true) {
window.open('http://www.washingtonpost.com');
} else if (document.getElementById("asteroid").checked == true) {
window.open('http://www.theonion.com');
}
else {
window.open('http://www.google.com');
}
/*obviously, add in other branches for other options, probably as switch/case not a bunch of if/then*/
}
</script>
具有 src=
属性的 <script>
不会 运行 标记之间的代码,因此您必须将它们分开到两个不同的脚本中:
例子
<script src="http://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$('.column:checkbox').change(function () {
/* rest of your code */
});
</script>
这就是您的 jQuery 代码无法正常工作的原因之一。
另一个是您使用了错误的 select 或:.column:checkbox
selects 复选框 class 为 column
,例如 <input type="checkbox" class="column">
.
您想 select 带有 class column
的元素中的复选框,为此您想在 column
和 [= 之间放置一个 space 22=]。分隔表示一个是父元素,另一个是某个子元素:
$('.column :checkbox')
演示
$('.column :checkbox').change(function() {
var $cs = $(this).closest('.column').find(':checkbox:checked');
if ($cs.length > 2) {
this.checked = false;
}
});
body {
font-family: arial;
background-color: white;
line-height: 1.15;
}
#schedbutton {
background-color: #f8b019;
}
.column {
float: left;
width: 33.33%;
.padding: 10px;
}
.row:after {
content: "";
display: table;
clear: both;
}
@media screen and (max-width: 600px) {
.column {
width: 100%;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row">
<div class="column" style="background-color:white;">
<h2>Support Group A</h2>
<p>Choose one or two main topics.</p>
<form action="/action_page.php" method="get">
<input type="checkbox" id="apple"> Apple<br>
<input type="checkbox" id="asteroid"> Asteroid<br>
<input type="checkbox" id="ambulance"> Ambulance<br>
<input type="checkbox" id="animal"> Animal<br>
<input type="checkbox" id="allergy"> Allergy<br>
</form>
</div>
<div class="column" style="background-color:white">
<!--2nd column-->
<h2>Support Group B</h2>
<p>Choose one main topic.</p>
<form action="/action_page.php" method="get">
<input type="checkbox" id="brains">Brains<br>
<input type="checkbox" id="brawn">Brawn<br>
<input type="checkbox" id="bluetooth">Bluetooth<br>
</form>
</div>
<div class="column" style="background-color:white;">
<!--3rd column-->
<h2>Support Group C</h2>
<p>Choose one main topic.</p>
<form action="/action_page.php" method="get">
<input type="checkbox" id="cake">Cake<br>
<input type="checkbox" id="canvas">Canvas<br>
<input type="checkbox" id="copper">Copper<br>
</form>
</div>
我对 VBA 以外的任何编码都是新手,我相信它会显示出来!我被卡住了,我想我遗漏了一些明显的东西。
我正在尝试做的事情: 此代码将嵌入新的 Google 站点页面(是的,非常有限)。它显示了一堆复选框;用户选择一个或多个选项,然后单击一个按钮。单击该按钮可打开几个新页面之一,具体取决于选中的 box/boxes。所有这些都有效。
我想将选中的框数限制为每列 2 个。 (后来我希望将它限制为后两列的 1/列,但现在我根本无法限制它。)我无法做到这一点。我正在尝试的不会干扰其余代码,但它仍然允许无限制检查。
我在下面包含了一个虚拟脚本;真实的脚本有其他选择选项和 URL 结果,加上更多样式细节,但除此之外与此匹配。
我试过的方法: 代码的 JQuery 位是从网上某人那里得到的,但我遵循逻辑。我试过 运行 该部分的代码包含在整体的不同部分;我不确定它应该去哪里,但没有任何效果。
我想知道 (1) 我的语法是否有问题,或者 (2) 我如何 calling/structuring 其余代码的 JQuery 部分。我在 FWIW Chrome 中执行此操作。
谢谢——非常感谢您的帮助!
简化的示例代码:
<head>
<meta name="scheduler" content="width=device-width, initial-scale=1">
<style>
body {font-family:arial; background-color:white; line-height: 1.15;}
/*Handles schedule options button - how it looks, what it does when hovered over*/
#schedbutton{
background-color:#f8b019;
}
/*Columns: 3 equal*/
.column{
float: left;
width: 33.33%;
.padding: 10px;
}
.row:after{
content: "";
display: table;
clear: both;
}
/*Responsive layout - columns will stack for narrow screens*/
@media screen and (max-width: 600px) {
.column {
width: 100%;
}
}
</style>
</head>
<body>
<h1>Schedule SME Phone Support</h1>
<p><b>Directions:</b> Directions will go here.</p>
<!--divides the rest into columns-->
<div class="row">
<div class="column" style="background-color:white;">
<h2>Support Group A</h2>
<p>Choose one or two main topics.</p>
<form action="/action_page.php" method="get">
<input type="checkbox" id="apple"> Apple<br>
<input type="checkbox" id="asteroid"> Asteroid<br>
<input type="checkbox" id="ambulance"> Ambulance<br>
<input type="checkbox" id="animal"> Animal<br>
<input type="checkbox" id="allergy"> Allergy<br>
</form>
</div>
<div class="column" style="background-color:white"> <!--2nd column-->
<h2>Support Group B</h2>
<p>Choose one main topic.</p>
<form action="/action_page.php" method="get">
<input type="checkbox" id="brains">Brains<br>
<input type="checkbox" id="brawn">Brawn<br>
<input type="checkbox" id="bluetooth">Bluetooth<br>
</form>
</div>
<div class="column" style="background-color:white;"><!--3rd column-->
<h2>Support Group C</h2>
<p>Choose one main topic.</p>
<form action="/action_page.php" method="get">
<input type="checkbox" id="cake">Cake<br>
<input type="checkbox" id="canvas">Canvas<br>
<input type="checkbox" id="copper">Copper<br>
</form>
</div>
<!--Button to click, which triggers script based on form selections-->
<br>
<button id=schedbutton onclick="myFunction()">See Scheduling Options</button>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
/*for some reason, still cannot make this work*/
/*testing to try and limit number of ckboxes per group checked*/
$('.column:checkbox').change(function () {
var $cs = $(this).closest('.column').find(':checkbox:checked');
if ($cs.length > 2) {
this.checked = false;
}
});
</script>
<!--Script to make the button actually do what we want-->
<script type="text/javascript">
function myFunction(){
/*NB: can't make alert boxes work in New Google Sites, possibly due to iframe limitations?*/
/*Anyhow: if there IS a way to make them work, use that as the fallback instead of a separate "nope" page.*/
if (document.getElementById("apple").checked == true) {
window.open('http://www.washingtonpost.com');
} else if (document.getElementById("asteroid").checked == true) {
window.open('http://www.theonion.com');
}
else {
window.open('http://www.google.com');
}
/*obviously, add in other branches for other options, probably as switch/case not a bunch of if/then*/
}
</script>
具有 src=
属性的 <script>
不会 运行 标记之间的代码,因此您必须将它们分开到两个不同的脚本中:
例子
<script src="http://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$('.column:checkbox').change(function () {
/* rest of your code */
});
</script>
这就是您的 jQuery 代码无法正常工作的原因之一。
另一个是您使用了错误的 select 或:.column:checkbox
selects 复选框 class 为 column
,例如 <input type="checkbox" class="column">
.
您想 select 带有 class column
的元素中的复选框,为此您想在 column
和 [= 之间放置一个 space 22=]。分隔表示一个是父元素,另一个是某个子元素:
$('.column :checkbox')
演示
$('.column :checkbox').change(function() {
var $cs = $(this).closest('.column').find(':checkbox:checked');
if ($cs.length > 2) {
this.checked = false;
}
});
body {
font-family: arial;
background-color: white;
line-height: 1.15;
}
#schedbutton {
background-color: #f8b019;
}
.column {
float: left;
width: 33.33%;
.padding: 10px;
}
.row:after {
content: "";
display: table;
clear: both;
}
@media screen and (max-width: 600px) {
.column {
width: 100%;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row">
<div class="column" style="background-color:white;">
<h2>Support Group A</h2>
<p>Choose one or two main topics.</p>
<form action="/action_page.php" method="get">
<input type="checkbox" id="apple"> Apple<br>
<input type="checkbox" id="asteroid"> Asteroid<br>
<input type="checkbox" id="ambulance"> Ambulance<br>
<input type="checkbox" id="animal"> Animal<br>
<input type="checkbox" id="allergy"> Allergy<br>
</form>
</div>
<div class="column" style="background-color:white">
<!--2nd column-->
<h2>Support Group B</h2>
<p>Choose one main topic.</p>
<form action="/action_page.php" method="get">
<input type="checkbox" id="brains">Brains<br>
<input type="checkbox" id="brawn">Brawn<br>
<input type="checkbox" id="bluetooth">Bluetooth<br>
</form>
</div>
<div class="column" style="background-color:white;">
<!--3rd column-->
<h2>Support Group C</h2>
<p>Choose one main topic.</p>
<form action="/action_page.php" method="get">
<input type="checkbox" id="cake">Cake<br>
<input type="checkbox" id="canvas">Canvas<br>
<input type="checkbox" id="copper">Copper<br>
</form>
</div>