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

时间:2014-09-02 02:09:16

标签: javascript jquery forms conditional

我们有一个表格,用户可以匿名发表意见,但如果他们想留下他们的电子邮件地址进行跟进,他们可以。如果他们选择留下他们的电子邮件,我们希望他们查看他们阅读我们隐私政策的方框。如果他们选择不留下电子邮件地址,则他们不需要选中此框。

以下是表单页面上的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>

谢谢

4 个答案:

答案 0 :(得分:1)

jQuery对象中没有.value属性。而是使用.val()并使用相等运算符而不是赋值运算符。

if (!$("input[name$='Mail']").val() === "") {

答案 1 :(得分:1)

您的情况似乎是,如果电子邮件字段中有内容,则必须选中该复选框。据推测,表单控件都有名称(否则它们不会成功),所以验证功能可以非常简单:

$("#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;
      }
    }
});

以下&#34;工作&#34;完全按照您的要求:

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

请注意您的位置:

if (!$("input[type='checkbox']").attr("checked")){

检查选中的属性,而不是已检查的属性。对于当前版本的jQuery(1.11),如果输入没有checked属性,即类似于上面的格式,那么...attr('checked')将返回 undefined 并且即使用户检查输入,表达式也会解析为 false

至少1.7版本,jQuery混淆了属性和属性,而 attr 方法返回了checked属性,而不是属性。

答案 2 :(得分:0)

你想要这个:

if (!$("input[name$='Mail']").value = "") {

改为:

if ($("input[name$='Mail']").val() !== "") {

您的版本正在为该值分配"";由于""评估为false,因此if条件永远不会成立。

答案 3 :(得分:0)

您可以使用“.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>

如果您想仅在邮件不为空时选中复选框,则必须:

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