【问题标题】:Jquery complete form validation issueJquery完整表单验证问题
【发布时间】:2016-05-26 17:18:29
【问题描述】:

我正在处理一个使用 jquery 验证表单的 php 表单。现在在这个表单中有单选按钮列表。如果用户单击是,则与该单选按钮列表相关的文本框将不会被验证。如果用户单击否,则应验证与该单选按钮列表相关的文本框..

但现在的问题是,我之前的开发人员是这样验证表单的:

jQuery(".required").each(function(){
    var vlr = jQuery(this).val();
    if(vlr == ''){
        alert("Value not to be blank");
        jQuery(this).focus();
        e.preventDefault();
        e.stopPropagation();
        return false;
    }
});

单选按钮列表的HTML部分

<tr>
      <td class="css-gen7 paragraph">Is premium paid? 
          <input name="is_premium_016" value="yes" class="required"  type="radio">Yes
          <input name="is_premium_016" value="no" class="required"  type="radio">No
      </td>
      <td class="css-gen7">if not,why not?  <input name="if_not_017" type="text" class="required" style="width:30%"></td>
    </tr>

此代码正在验证完整的表单我如何捕获单选按钮列表值以及如果用户勾选“是”如何停止文本框的验证?

我希望你明白我想要什么。

谢谢

【问题讨论】:

  • 您能否展示表单的 sn-p(最重要的是带有 Radio-Button Group 的部分)?在不知道单选按钮的属性/属性(如名称、类、id 等)的情况下给出一般意见有点困难......
  • 请检查我添加了html部分@Poiz

标签: javascript php jquery validation


【解决方案1】:

试试这个:

$('#search_form').submit(function() {
    if($('#fepUserIDValue').attr("checked") == "checked" && $('#inquiry_date').val() == '') {
       alert('Required field missing');
       return false;
    }
});

参考链接:

jQuery Validation ONLY when certain radio buttons selected

How do I Required text box if radio button selected on form submission using jquery?

【讨论】:

    【解决方案2】:

    HTML

         <input type="radio" class="checker yes" name="check" > yes: <br>
         <input type="radio" class="checker no" name="check" > no: <br>
    
        <div>
           <input type="text" class="isValid" name="name">  
        </div>
    

    JQUERY

          <script>
    
         //select the  radio buttons to be clicked 
        var radioBtns = jQuery('.checker');
         //text box to be affected but the radio buttons
         var textbox  = jQuery('.isValid');
    
         //when any of the  buttons  is clicked  a function to validate the textbox is run  
         radioBtns.on('click',function(){
            // get the button clicked 
             if (jQuery(this).hasClass('yes')){
                 // put code to affect textbox when not valid
                 alert('textbox not valid');
             }else if(jQuery(this).hasClass('no')){
                 //put code to affect the textbox when it is valid 
                 alert('text box is valid ');
             }
    
         });
     </script>
    

    【讨论】:

      【解决方案3】:

      所以您只想在用户单击“否”时执行验证?那是对的吗?那么这里有一个可能对你有用的代码:假设上面的假设是正确的。

      JAVASCRIPT

              <script type="text/javascript">
                  ;                           // CLOSE OFF ANY UNCLOSED JS TAGS... IF ANY ;-)
                  jQuery.noConflict();        // ADD THE noConflict() METHOD, IN CASE YOU ARE USING OTHER LIBRARIES THAT MAKE USE OF THE $ SYMBOL
                  (function ($) {
                      $(document).ready(function(e) {
                          // CREATE VARIABLES TO HOLD THE FORM, RADIO-BUTTON & TEXT-FIELD JQUERY OBJECTS
                          var isPremiumRadio      = $("input[name=is_premium_016]");
                          var ifNotWnyNot         = $("input[name=if_not_017]");
                          var controlForm         = $("form[name=name_of_your_form]");    //<== PLEASE; PUT THE REAL NAME OF YOUR FORM IN THE STEAD OF "name_of_your_form"
      
                          controlForm.on("submit", function(evt){
                              var theForm         = $(this);
                              var invalids        = [];
                              evt.preventDefault();
                              evt.stopPropagation();
      
                              $(".required").each(function(){
                                  var vlr = jQuery(this).val();
                                  if( $(this).is(isPremiumRadio) ){
                                      if(isPremiumRadio.val() == "no"){
                                          //PERFORM YOUR VALIDATION HERE...
                                          if(ifNotWnyNot.val() == ""){
                                              invalids.push("Blank Field Error");
                                              alert("Could you, please, let us know why not?");
                                          }
                                      }
                                  }else if( $(this).is(ifNotWnyNot)  && ifNotWnyNot == ""){
                                      if(isPremiumRadio.val() == "no"){
                                          invalids.push("Blank Field Error");
                                          alert("Could you, please, let us know why not?");
                                      }
                                  }else{
                                      // VALIDATE OTHER FIELDS OTHERWISE...
                                      if(vlr == ''){
                                          invalids.push("Blank Field Error");
                                      }
                                  }
                              });
      
                              if(invalids.length == 0){
                                  theForm.submit();
                              }else{
                                  alert("Value not to be blank.");
                              }
      
                          });
                      });
      
      
                  })(jQuery);
      
              </script>
      

      HTML ++FORM++

              <tr>
                  <td class="css-gen7 paragraph">Is premium paid?
                      <input name="is_premium_016" value="yes" class="required"  type="radio">Yes
                      <input name="is_premium_016" value="no" class="required"  type="radio">No
                  </td>
                  <td class="css-gen7">if not,why not?  <input name="if_not_017" type="text" class="required" style="width:30%"></td>
              </tr>
      

      【讨论】:

      • 不仅对于与此单选按钮列表相关的文本框,还应执行另一个验证。如果用户单击“是”,则不应为此文本框触发验证,而应为所有其他文本框触发验证。我希望你明白了
      • @AzadChouhan 当然;现在明白了。足够好 ;-) 将更新帖子以考虑到这一点......
      • @AzadChouhan 帖子现已更新。希望它能按预期工作。让我们知道您是否还有其他问题。祝你好运,伙计;-)
      猜你喜欢
      • 1970-01-01
      • 2011-07-17
      • 2017-08-29
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      相关资源
      最近更新 更多