选中复选框后,验证错误消息不会隐藏

时间:2014-04-08 07:03:17

标签: jquery ruby-on-rails

在我的通讯页面中,我有五个复选框,如果用户没有勾选任何复选框,那么我在标签上显示验证错误信息如下所示:

<script type="text/javascript">
   $("#communication_form").submit(function ( event ) {
      var phone_value = $("#cb_Phone").is(':checked') ? 1 : 0;
      var email_value = $("#cb_Email").is(':checked') ? 1 : 0;
      var skype_value = $("#cb_Skype").is(':checked') ? 1 : 0;
      var website_value = $("#cb_Website").is(':checked') ? 1 : 0;
      var twitter_value = $("#cb_Twitter").is(':checked') ? 1 : 0;
      var hasError = false;

      if(phone_value == 0 && email_value == 0 && skype_value == 0 && website_value == 0 && twitter_value == 0)
      {             
         var message = $("#errormessage").html("Please Select");//alert("Hassan");
         message.show();
         hasError = true;
      } 
      else
      {
         hasError = false;
      }
      if(hasError)
      {
        event.preventDefault();
      }
   });
</script>

它工作正常,但当我检查5复选框的任何复选框验证错误消息不删除和下面是我显示验证错误消息的标签:

<table align="center" width="100%">
      <tr>
         <td>

         </td>
         <td></td>
         <td>
            <label for="validation_all" id="errormessage" visible="false" style="font-size:60%; color:red;"></label>
         </td>
      </tr>
</table>

等待回复。 感谢。

4 个答案:

答案 0 :(得分:2)

点击复选框

,将visible的{​​{1}}属性更新为errormessage
false

一旦用户选择了任何复选框,这将删除错误消息。

此外,您可以使您的代码更加简洁明了

$("#cb_Phone,#cb_Email,#cb_Skype,#cb_Website,#cb_Twitter").change(function() {
    if(this.checked) {
       $("#errormessage").attr('visible','false');
    }
});

答案 1 :(得分:0)

你不清楚&amp;隐藏其他部分中的消息div,因此请使用下面的代码

试试这个

 else
  {
     hasError = false;
     $("#errormessage").empty().hide(); // This line will clear the div and hide
  }

答案 2 :(得分:0)

尝试

if(phone_value == 0 && email_value == 0 && skype_value == 0 && website_value == 0 && twitter_value == 0)
      {             
         var message = $("#errormessage").html("Please Select");//alert("Hassan");
         message.show();
         hasError = true;
      } 
      else
      {
        $("#errormessage").html(''); 
// OR $("#errormessage").hide();
         hasError = false;
      }

答案 3 :(得分:0)

我会在if子句之外声明消息,然后将消息设置为隐藏在else中,即:

var message = $("#errormessage").html("Please Select");//alert("Hassan");

    if(phone_value == 0 && email_value == 0 && skype_value == 0 && website_value == 0 && twitter_value == 0)
    {             
        message.show();
        hasError = true;
    }
    else
    {
        hasError = false;
        message.empty().hide();
    }