0

我有一个页面,其中有几个使用 while 循环创建的表单,每个表单都有四个选择。我正在尝试弄清楚如何检查属于当前表单的每个选择(包含单击的按钮的选择)以确认是否选择了任何选择。所有表单都包装在一个名为#audit_content.

目的是检查变量grade是否不是某个值,然后脚本检查是否选择了任何选择。

(该值$i是在while循环期间创建的,用于唯一标识每个表单)

html

    <form id="audit_form<? echo $i; ?>">
      <select name="grade" class="grade<? echo $i; ?>">
         <option value="1">1</option>
         <option value="2">2</option>
         <option value="3">3</option>
      <select>    
      <select name="patient" class="reason_select">
         <option value="">Select</option>
         <option value="2">2</option>
         <option value="3">3</option>
         <option value="4">4</option>
      </select>
      <select name="exposure" class="reason_select">
         <option value="">Select</option>
         <option value="2">2</option>
         <option value="3">3</option>
         <option value="4">4</option>
      </select>
      <select name="equipment" class="reason_select">
         <option value="">Select</option>
         <option value="2">2</option>
         <option value="3">3</option>
         <option value="4">4</option>
      </select>
      <select name="positioning" class="reason_select">
         <option value="">Select</option>
         <option value="2">2</option>
         <option value="3">3</option>
         <option value="4">4</option>
      </select>
    <input type="button" name="audit_submit" class="audit_submit audit_submit_btn ie7_submit" value="" />
    <input type="hidden" class="form_id" value="<? echo $i; ?>" >
 </form>

jQuery

<script>
  $(document).ready(function(){
    $('#audit_content').on("click", ".audit_submit", function(){
      var form_id = $(this).prev('.form_id').val();
      var grade = $('.grade'+form_id).val();
             if(grade != 1){
      $('select.reason_select').each(function(){
          alert($(this).text())
             }
        });
</script>

脚本原样显示每个选择的值以及reason_select页面上的类,我意识到这是因为我没有告诉它检查特定的表单,这就是我坚持的一点。

4

2 回答 2

1

我会将脚本更改为

<script>
  $(document).ready(function () {
      $('#audit_content').on("click", ".audit_submit", function () {
          var form = $(this).prev('form');
          var grade = $('select[name="grade"]', form).val();
          if (grade != '1') {
              $('select.reason_select', form ).each(function () {
                  alert($(this).text());
              });
          }
      });
  });
</script>

在您发布的脚本中,缺少几个)}因此应该会产生语法错误。

你提到

当前表单(包含单击按钮的表单)

但是您的按钮不包含在表单中,这就是为什么我将代码更改为form = $(this).prev('form')

于 2013-10-26T22:47:31.590 回答
1

显示的按钮在表单之外,而不是在里面提到的。

要隔离任何重复类型的小部件,请查找该小部件的父级,然后仅在其中搜索:在表单内移动按钮将使其变得非常容易,方法是:

$('#audit_content').on("click", ".audit_submit", function () {
    var form=$(this).closest('form')
    var selects=form.find('select');
// do somthing with selects

})
于 2013-10-26T22:51:33.147 回答