【问题标题】:Jquery form verification with condition if and nulls带有条件 if 和 nulls 的 Jquery 表单验证
【发布时间】:2014-02-22 14:31:57
【问题描述】:

我正在尝试进行一些条件表单验证,但我正在努力解决它。

情况如下:我有一个可选的文本字段(#hb),可以留空并提交表单,但如果它不为空,则必须在提交表单之前输入日期字段(#hdate)

我尝试了各种方法,但我尝试的最后一个是(value !=''),如果#hb 为空白,我认为应该可以解决。

任何人有什么建议让我继续吗?

谢谢大家!

JQuery 代码

var bla = $('#hb').val();
var blaa = $('#hdate').val();

if (bla != '' && blaa == '') {
      $('#EC9').show();
      $('#Edialog').dialog('open');
      return false;
   } 

编辑:这是我的全部功能

<script>
function validateForm() {
   var e = $('#Consultant');
   var x = e.val();
   var w = $('#out');
   var q = w.val();
   var r = $('#inpt');
   var t = r.val();
   var y = $('#Speciality');
   var u = y.val();


   var asa = $('#nahf').is(':checked');
   var asb = $('#ohf').is(':checked');
   var asc = $('#aelc').is(':checked'); 
   var asd = $('#aat').is(':checked');  
   var ase = $('#aqdp').is(':checked');

   var ped = $('#Pace').val();


    var bla = $('#hb').val();
    var blaa = $('#hdate').val();
    var blb = $('#pl').val();
    var blbb = $('#pdate').val();
    var blc = $('#inr').val();
    var blcc = $('#idate').val();
    var bld = $('#bilirubin').val();
    var bldd = $('#bdate').val();
    var ble = $('#crp').val();
    var blee = $('#cdate').val();



   if (x == null || x == "") {
      $('#EC1').show();
      $('#Edialog').dialog('open');
      return false;
   }

      if (q == null || q == "") {
      $('#EC2').show();
      $('#Edialog').dialog('open');
      return false;
   }

    if (t == null || t == "") {
      $('#EC3').show();
      $('#Edialog').dialog('open');
      return false;
   }

   if (u == null || u == "") {
      $('#EC4').show();
      $('#Edialog').dialog('open');
      return false;
   }

   if (asa == "0" & asb == "0" & asc == "0" & asd == "0" & ase == "0") {
      $('#EC5').show();
      $('#Edialog').dialog('open');
      return false;
   }

   if (ped == null || ped == "") {
      $('#EC8').show();
      $('#Edialog').dialog('open');
      return false;
   }

    if($(bla).val() != '' && $(blaa).val() == '') {
    $('#EC9').show();
    $('#Edialog').dialog('open');
    return false;
 } 

   if (blb != '' && blbb == '') {
      $('#EC9').show();
      $('#Edialog').dialog('open');
      return false;
   }

   if (blc != '' && blcc == '') {
      $('#EC9').show();
      $('#Edialog').dialog('open');
      return false;
   }

   if (bld != '' && bldd == '') {
      $('#EC9').show();
      $('#Edialog').dialog('open');
      return false;
   }

   if (ble != '' && blee == '') {
      $('#EC9').show();
      $('#Edialog').dialog('open');
      return false;
   }

}
</script>

【问题讨论】:

  • 那是什么问题?现在你的代码工作与否?如果控制台没有任何错误?
  • 目前无论是否填写都会显示错误对话框(#Edialog)
  • 尝试警报或控制台查看 bla 和 blaa 的值
  • 我添加了 alert(bla & ' ' & blaa);到代码,我得到的只是一个 0。当我使用 alert(bla + ' ' + blaa);我变得不明确
  • 请不要在不使用 jQuery Validate 插件时使用jquery-validate 标签。

标签: jquery forms validation null conditional


【解决方案1】:

/** 在前端代码中/ / 例如onclick属性必须使用return关键字然后才停止回发**/

<button type="button" id="btnSubmit" onclick="return validateForm()">Submit</button>

/** jQuery 代码 **/

function validateForm(){
    var isSubmit = true;
    if($("#hb").val().length != 0){
        if($("#hdate").val().length != 0){
            if(validateDateFormat($("#hdate").val())){
                   isSubmit=true;
            }
        }
        else
          {isSubmit=false;}
    }
    else
    { isSubmit=true; }
    return isSubmit;
}

function validateDateFormat(dateValue){
    var bool = false;
    var myDate = new Date();
    var bits = dateValue.split('/');
    myDate.setFullYear(bits[2], bits[1] - 1, bits[0]);
    if (myDate != "Invalid Date") {
        bool = true;
    }
    return bool;
}

/**中的日期格式应该是dd/mm/yyyy格式。如果您想要任何其他格式,请更改 split 函数并重新排序 setFullYear 函数 **/

【讨论】:

  • 酷,谢谢 - 我已经厌倦了将它合并到我上面的函数中,但它似乎绕过了验证。仅供参考,我在上面添加了完整的验证码。
猜你喜欢
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 2010-12-06
相关资源
最近更新 更多