[英]Jquery just does not want to work
I suck at Jquery and Javascript. 我很喜欢Jquery和Javascript。
I've been trying to make this work: 我一直在努力使这项工作:
debugger;
(function () {
$('form input').keyup(function () {
var url = [false, false, false, false, false];
var plus = 0;
$('form input').each(function () {
plus = plus + 1;
if ($(this).val() == '') {
url[plus] = true;
}
});
$("#demo").text(url);
});
})()
But jquery won't even set the #demo text at all, nothing is happening whatsoever. 但是jquery甚至根本不会设置#demo文本,什么也没有发生。
html: 的HTML:
<div class="inner cover">
<h1 class="cover-heading">Create.</h1>
<p class="lead">
<form action="./index.php?p=create" method="post" class="form-horizontal" role="form">
<div class="form-group">
<input name="url" type="text" id="url" class="form-control" placeholder="URL">
</div>
<div class="form-group">
<input name="url2" type="text" id="url2" class="form-control" placeholder="URL">
</div>
<div class="form-group">
<input name="url3" type="text" id="url3" class="form-control" placeholder="URL">
</div>
<div class="form-group">
<input name="url4" type="text" id="url4" class="form-control" placeholder="URL">
</div>
<div class="form-group">
<input name="url5" type="text" id="url5" class="form-control" placeholder="URL">
</div>
<div class="form-group">
<button type="submit" name="submit_url" class="btn btn-lg btn-default">Go!</button>
</div>
</form>
</p>
<p id="demo"></p>
</div>
What are all of the things I've totally done all wrong? 我完全做错了的所有事情是什么?
(I've been testing this in JSfiddle) (我已经在JSfiddle中对此进行了测试)
Thanks in advance. 提前致谢。 -G
-G
$('form > input')
should be 应该
$('form input')
Becase >
means " direct child " and you have a div
between form
and input
Becase
>
表示“ 直子 ”,您在form
和input
之间有一个div
$('form > input')
requires inputs to be direct descendants of "form". $('form > input')
要求输入必须是“ form”的直接后代。 yours are wrapped in DIVs. 您的包裹在DIV中。 the correct selector is
$('form input')
正确的选择器是
$('form input')
(function () { $('form input').keyup(function () { var url = [false, false, false, false, false]; var plus = 0; $('form > input').each(function () { plus = plus + 1; if ($(this).val() == '') { url[plus] = true; } }); $("#demo").text("yo"); }); })()
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script> <div class="inner cover"> <h1 class="cover-heading">Create.</h1> <p class="lead"> <form action="./index.php?p=create" method="post" class="form-horizontal" role="form"> <div class="form-group"> <input name="url" type="text" id="url" class="form-control" placeholder="URL"> </div> <div class="form-group"> <input name="url2" type="text" id="url2" class="form-control" placeholder="URL"> </div> <div class="form-group"> <input name="url3" type="text" id="url3" class="form-control" placeholder="URL"> </div> <div class="form-group"> <input name="url4" type="text" id="url4" class="form-control" placeholder="URL"> </div> <div class="form-group"> <input name="url5" type="text" id="url5" class="form-control" placeholder="URL"> </div> <div class="form-group"> <button type="submit" name="submit_url" class="btn btn-lg btn-default">Go!</button> </div> </form> </p> <p id="demo"></p> </div>
AS PER REQUEST IN COMMENT : again, selector is not "form > input", is "form input". 根据要求 :再次,选择器不是“表单>输入”,而是“表单输入”。 Also, what's "empty" in your IF?
另外,您的IF中的“空”是什么? this works:
这有效:
(function () { var url = [false, false, false, false, false]; var plus = 0; $('form input').keyup(function () { $('form input').each(function () { plus++; if ($(this).val() == '') url[plus] = true; }); // WHAT'S EMPTY?? /* if (empty) { $('#register').attr('disabled', 'disabled'); } else { $('#register').removeAttr('disabled'); } */ $("#demo").text(url); }); })()
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script> <div class="inner cover"> <h1 class="cover-heading">Create.</h1> <p class="lead"> <form action="./index.php?p=create" method="post" class="form-horizontal" role="form"> <div class="form-group"> <input name="url" type="text" id="url" class="form-control" placeholder="URL"> </div> <div class="form-group"> <input name="url2" type="text" id="url2" class="form-control" placeholder="URL"> </div> <div class="form-group"> <input name="url3" type="text" id="url3" class="form-control" placeholder="URL"> </div> <div class="form-group"> <input name="url4" type="text" id="url4" class="form-control" placeholder="URL"> </div> <div class="form-group"> <input name="url5" type="text" id="url5" class="form-control" placeholder="URL"> </div> <div class="form-group"> <button type="submit" name="submit_url" class="btn btn-lg btn-default">Go!</button> </div> </form> </p> <p id="demo"></p> </div>
$('form > input')
selects direct input descendants of form, like this: $('form > input')
选择形式的直接输入后代,如下所示:
<form>
<input />
</form>
but since you have this structure: 但由于您具有以下结构:
<form>
<div>
<input />
</div>
</form>
you need to use $('form > div > input')
, or, more loosely, just $('form input')
(without the >
character). 您需要使用
$('form > div > input')
,或更宽松地说,只需使用$('form input')
(不带>
字符)。
See it here: 在这里看到它:
(function () { $('form input').keyup(function () { var url = [false, false, false, false, false]; var plus = 0; $('form input').each(function () { plus = plus + 1; if ($(this).val() == '') { url[plus] = true; } }); if (plus == 0) { $('#register').attr('disabled', 'disabled'); } else { $('#register').removeAttr('disabled'); } $("#demo").text(url); }); })()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="inner cover"> <h1 class="cover-heading">Create.</h1> <p class="lead"> <form action="./index.php?p=create" method="post" class="form-horizontal" role="form"> <div class="form-group"> <input name="url" type="text" id="url" class="form-control" placeholder="URL"> </div> <div class="form-group"> <input name="url2" type="text" id="url2" class="form-control" placeholder="URL"> </div> <div class="form-group"> <input name="url3" type="text" id="url3" class="form-control" placeholder="URL"> </div> <div class="form-group"> <input name="url4" type="text" id="url4" class="form-control" placeholder="URL"> </div> <div class="form-group"> <input name="url5" type="text" id="url5" class="form-control" placeholder="URL"> </div> <div class="form-group"> <button type="submit" name="submit_url" class="btn btn-lg btn-default">Go!</button> </div> </form> </p> <p id="demo"></p> </div>
Okay so through the help of several people on here (credit to all of you, thanks for your help!) I finally reached a solution that works perfectly. 好的,通过这里的几个人的帮助(感谢大家,谢谢您的帮助!),我终于找到了一个完美的解决方案。 :)
:)
$(window).load(function(){
(function () {
$('form input').keyup(function () {
var url = [false, false, false, false, false];
var plus = -1;
var next;
$('form input').each(function () {
plus = plus + 1;
if ($(this).val() != '') {
url[plus] = true;
next = plus + 1;
$("#url"+next).show();
} else {
url[plus] = false;
next = plus + 1;
$("#url"+next).val("");
$("#url"+next).hide();
}
});
});
})()
});
HTML: HTML:
<div class="inner cover">
<h1 class="cover-heading">Create.</h1>
<p class="lead">
<form action="./index.php?p=create" method="post" class="form-horizontal" role="form">
<div class="form-group">
<input name="url0" type="text" id="url0" class="form-control" placeholder="URL" required>
</div>
<div class="form-group">
<input name="url1" type="text" id="url1" style="display:none" class="form-control" placeholder="URL">
</div>
<div class="form-group">
<input name="url2" type="text" id="url2" style="display:none" class="form-control" placeholder="URL">
</div>
<div class="form-group">
<input name="url3" type="text" id="url3" style="display:none" class="form-control" placeholder="URL">
</div>
<div class="form-group">
<input name="url4" type="text" id="url4" style="display:none" class="form-control" placeholder="URL">
</div>
<div class="form-group">
<button type="submit" name="submit_url" class="btn btn-lg btn-default">Go!</button>
</div>
</form>
</p>
</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.