Javascript如果为空,是否不工作?
因此,如果表单为空,我尝试更改提交按钮的颜色。所以我不确定我做错了什么,因为我是个新手,但这是我目前的代码 我的部分形式Javascript如果为空,是否不工作?,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,因此,如果表单为空,我尝试更改提交按钮的颜色。所以我不确定我做错了什么,因为我是个新手,但这是我目前的代码 我的部分形式 <div class="field"> <input type="email" placeholder="Email"> </div> <div class="submit"> <input type="submit" value="Reset Password"> </div> 有什么想法吗 if
<div class="field">
<input type="email" placeholder="Email">
</div>
<div class="submit">
<input type="submit" value="Reset Password">
</div>
有什么想法吗
if ($('#field').is(':empty')){
$("#submit").css({"backgroundColor":"black"});
}
您必须关闭“#字段”上的paren,以便获得一个jquery对象,以便在其上运行is
函数
另外,您的“字段”是一个类而不是id,因此您需要一个
而不是
选择器
当然,所有这些还取决于您将类字段
移动到输入,因为您实际上不想在div上检查是否为空
因此,您实际上希望用整个代码来实现这一点:
<div>
<input class="field" type="email" placeholder="Email">
</div>
<div>
<input class="submit" type="submit" value="Reset Password">
</div>
if ($('.field').is(':empty')){
$(".submit").css({"backgroundColor":"black"});
}
如果($('.field')。是(':empty')){
$(“.submit”).css({“backgroundColor”:“black”});
}
您在jQuery中指定了id,而它应该是类-
if ($('.field'.is(':empty'))){ // field is a class, not an id, extra parentheses needed
$("#submit").css({"backgroundColor":"black"});
}
但是,您应该做的是检查email字段的值,因为输入会使字段“不为空”,这意味着上述将永远无法工作
您需要做的是检查输入的值是否有任何长度,输入的容器不相关:
if(!$('input[name="email"]').val().length) {
$('#submit').css({"backgroundColor":"black"});
}
编辑:在OP使他的愿望更清晰(验证电子邮件)后完成代码-
$('input[name=“email”]”)。更改(函数(){
//用于验证电子邮件地址的正则表达式
变量正则表达式=/^([^()[\]\\,;:\s@\“]+(\.[^()[\]\,;:\s@\“]+)*)(\+\)(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3}.[0-9]{1,3}.];
var validEmail=regex.test($(this.val());
if(true==validEmail){
$('#提交').css({
“背景”:“#中交”,
“颜色”:“黑色”
});
}
});
字段
是一个类,其中存在语法错误。'field'
后面缺少右括号
尝试:
类以点(.)开头
我先从哈希开始#
这就是您的错误您的代码中存在一些语法错误,使其无法正常执行:
当您实际分配了字段
的div a类时,您正在查询id为字段
的DOM对象。将查询更改为$('.field')
,它应该可以工作
在调用jQuery函数$
时,您忽略了关闭参数,这将阻止它正确返回要调用is()
方法的jQuery对象
您正在使用jQuery:empty
伪选择器检查您的div是否输入了任何值,但这不是此函数的预期用途。相反,您应该直接在输入本身上使用val()
方法来检查输入本身是否输入了任何内容,并将其作为条件
您正在使用#submit
的id查询提交按钮,但您的提交输入未分配任何id。您可以为其分配#submit
id,也可以通过其类型
属性进行查询
更正这些错误后,您的代码应如下所示:
if (!$('.field > input').val()){
$("input[type='submit']").css("backgroundColor", "black");
}
您可以查看工作代码可能在#field
之后缺少一个右括号?field和submit都是类。。如果($('.field'.is(':empty'){$(“.submit”).css({“backgroundColor:“black”});}'field'在OP的示例中是一个类,并且只要输入在其中,它就永远不会是空的,那么试着这样做。你能提交小提琴或其他东西吗?我似乎无法改变颜色……但这不会起作用,因为.field从来都不是空的。$('.field')).val()==始终未定义。这是因为您尚未命名您的输入。它必须有一个名称,如name=“email”(fiddle coming)。你确定吗?当我加载页面时,它不会显示黑色的“提交”按钮,而是默认按钮。我不确定你是否理解我试图实现的目标。当页面加载时,它将是一种颜色,但当填充空白字段时,它会改变。在我的问题中,我认为它是另一种方式,但它仍然等于相同的颜色ng.我正在尝试做一些类似于iCloud网站的事情,两个字段都必须填写,然后submit按钮会改变颜色啊!所以你想要与你最初要求的相反…让我改变一些事情。添加了一个链接作为示例。在前面的评论中是更新的小提琴。你必须设置原始条件,然后h对元素进行更改操作
$('input[name="email"]').change(function () {
// regex to validate e-mail address
var regex = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
var validEmail = regex.test( $(this).val() );
if(true == validEmail) {
$('#submit').css({
"background": "#CCCCCC",
"color": "black"
});
}
});
if ($('.field').is(':empty')){
$("#submit").css({"backgroundColor":"black"});
}
if (!$('.field > input').val()){
$("input[type='submit']").css("backgroundColor", "black");
}