Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-如何检查表单上的2个条件_Javascript_Jquery_Forms_Conditional - Fatal编程技术网

Javascript-如何检查表单上的2个条件

Javascript-如何检查表单上的2个条件,javascript,jquery,forms,conditional,Javascript,Jquery,Forms,Conditional,我们有一个表单,用户可以匿名发表意见,但如果他们想留下自己的电子邮件地址进行跟进,他们可以。如果他们选择留下电子邮件,我们希望他们选中阅读我们隐私政策的复选框。如果他们选择不留下电子邮件地址,则无需勾选该复选框 下面是表单页面上的Javascript代码。这两种情况下都不起作用,只有勾选此框,我才能使其起作用: <script type="text/javascript"> $(document).ready(function(){ $("#form").submit(fu

我们有一个表单,用户可以匿名发表意见,但如果他们想留下自己的电子邮件地址进行跟进,他们可以。如果他们选择留下电子邮件,我们希望他们选中阅读我们隐私政策的复选框。如果他们选择不留下电子邮件地址,则无需勾选该复选框

下面是表单页面上的Javascript代码。这两种情况下都不起作用,只有勾选此框,我才能使其起作用:

<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>