Javascript-如何检查表单上的2个条件
我们有一个表单,用户可以匿名发表意见,但如果他们想留下自己的电子邮件地址进行跟进,他们可以。如果他们选择留下电子邮件,我们希望他们选中阅读我们隐私政策的复选框。如果他们选择不留下电子邮件地址,则无需勾选该复选框 下面是表单页面上的Javascript代码。这两种情况下都不起作用,只有勾选此框,我才能使其起作用:Javascript-如何检查表单上的2个条件,javascript,jquery,forms,conditional,Javascript,Jquery,Forms,Conditional,我们有一个表单,用户可以匿名发表意见,但如果他们想留下自己的电子邮件地址进行跟进,他们可以。如果他们选择留下电子邮件,我们希望他们选中阅读我们隐私政策的复选框。如果他们选择不留下电子邮件地址,则无需勾选该复选框 下面是表单页面上的Javascript代码。这两种情况下都不起作用,只有勾选此框,我才能使其起作用: <script type="text/javascript"> $(document).ready(function(){ $("#form").submit(fu
<script type="text/javascript">
$(document).ready(function(){
$("#form").submit(function(event){
if (!$("input[type='checkbox']").attr("checked")){
if ($("input[name$='Mail']").val() !== "") {
alert("内容に同意ください。");
event.preventDefault();
}
}
});
});
</script>
$(文档).ready(函数(){
$(“#表格”)。提交(功能(事件){
if(!$(“输入[type='checkbox']”)attr(“选中”)){
if($(“输入[name$='Mail']”)。val()!==“”){
警报(“内容に同意ください。");
event.preventDefault();
}
}
});
});
谢谢你你想要这个:
if (!$("input[name$='Mail']").value = "") {
而是像这样:
if ($("input[name$='Mail']").val() !== "") {
您的版本正在为值赋值
”
;由于“
的计算结果为false
,因此if
条件将永远不会为真。jQuery对象中没有.value
属性。请改用.val()
并使用相等运算符,而不是赋值运算符
if (!$("input[name$='Mail']").val() === "") {
您的条件似乎是,如果电子邮件字段中有内容,则必须选中复选框。可能表单控件都有名称(否则它们将不会成功),因此验证功能非常简单:
$("#form").submit(function(){
// If there's something in the email fiend and the checkbox isn't checked
// show the message
if (this.emailControlName.value != '' && !this.checkboxName.checked) {
alert("内容に同意ください。");
return false;
}
}
});
以下“工作”完全符合您的要求:
<script>
$(document).ready(function(){
$("#form").submit(function(){
if (this.email.value != '' && !this.readAgreement.checked){
alert("内容に同意ください。");
return false;
}
});
});
</script>
<form id="form">
email:<textarea name="email"></textarea><br>
read agreement:<input type="checkbox" name="readAgreement" value="yes"><br>
<input type="submit">
</form>
检查选中的属性,而不是选中的属性。对于当前版本的jQuery(1.11),如果输入没有选中的属性,即与上表中的属性类似,则…attr('checked')
将返回undefined,表达式解析为false,即使用户检查了输入
至少在1.7版之前,jQuery混淆了属性和属性,attr方法返回的是选中的属性,而不是属性。您可以使用“.is”(:checked“)检查复选框的状态,如下所示:
<script type="text/javascript">
$(document).ready(function(){
$("#form").submit(function(event){
if ($("input[type='checkbox']").is(":checked")){
if ($("input[name$='Mail']").val() !== "") {
alert("内容に同意ください。");
event.preventDefault();
}
}
});
});
</script>
$(文档).ready(函数(){
$(“#表格”)。提交(功能(事件){
如果($(“输入[type='checkbox']”)是(“:选中”)){
if($(“输入[name$='Mail']”)。val()!==“”){
警报(“内容に同意ください。");
event.preventDefault();
}
}
});
});
如果只想在邮件不为空时选中复选框,则必须:
<script type="text/javascript">
$(document).ready(function(){
$("#form").submit(function(event){
if ($("input[name$='Mail']").val() !== "") {
if ($("input[type='checkbox']").is(":checked")){
alert("内容に同意ください。");
event.preventDefault();
}
}
});
});
</script>
$(文档).ready(函数(){
$(“#表格”)。提交(功能(事件){
if($(“输入[name$='Mail']”)。val()!==“”){
如果($(“输入[type='checkbox']”)是(“:选中”)){
警报(“内容に同意ください。");
event.preventDefault();
}
}
});
});
好的,这很有意义。我已经更改了代码,但它仍然不起作用;如果Mail
字段为空,它仍然要求我选中该框。我将把修改后的代码放在问题中。让它alert
val()实际是什么。这行应该是这样读的吗?alert(“input[name$='Mail']”val())是的,没错。我会把这个.emailControlName.value
改成输入[name$='Mail']>。val()
?这个看起来可以用,但我不知道如何标记这个.emailControlName
和这个.checkboxName.checked
。我用上面的代码尝试了this.Mail
邮件和thisCheckbox
,但没有骰子:(emailControlName是用户输入电子邮件的表单控件的全名。与checkboxName类似,这将引用表单。所有表单控件都可以作为表单的命名属性使用(浏览器从一开始就支持它)。如果名称不是有效的标识符(例如,如果邮件控件名为“e–mail”),然后使用括号表示法:this['e-mail'].value
。这看起来是正确的,但我有一个问题。我目前正在使用Kentico CMS用于此表单,因此我不能使用
标记。Kentico使这类内容非常复杂;下面是电子邮件地址输入框的web元素:
-如何应用javascript代码?谢谢。每次,结果都是相同;邮件是否为空并不重要;页面需要复选框。欢迎,我不完全理解您的问题。请您详细说明一下。当然,谢谢您的提问。我想做的是为用户提供一个可选行,让他们在需要联系时留下电子邮件地址。但如果他们真的输入了地址,他们会需要选中一个框,说明他们已经阅读了我们的隐私政策。如果他们没有留下电子邮件地址,复选框可以为空。然后,您必须检查邮件是否为空,并且复选框也被选中。例如:$(文档)。就绪(函数(){$(“#表单”)。提交(函数(事件){If($($)输入[name$='mail'])。val()!=){if($((“输入[type='checkbox']”)是(“:选中”){alert(“内容に同意ください。"); event.preventDefault();}}}};});是的,这是正确的。到目前为止,发生的情况是,如果复选框未选中,用户会被告知需要选中它,即使“邮件”中没有任何内容。或者,用户输入电子邮件地址,他们不选中复选框,但表单仍会提交。
<script type="text/javascript">
$(document).ready(function(){
$("#form").submit(function(event){
if ($("input[name$='Mail']").val() !== "") {
if ($("input[type='checkbox']").is(":checked")){
alert("内容に同意ください。");
event.preventDefault();
}
}
});
});
</script>