Jquery中Ajax和Trigger的问题

时间:2016-04-22 08:46:05

标签: javascript jquery

我正在开发一个Symfony应用程序,在该应用程序中我有一个表,该表中的每一行都有一个选择select的值和一个button来启动一个带有Jquery的事件来保存数据库中的数据。

点击事件将是下一个:

$(document).on('click',"#contenedor_registro_Ngrupos button",function(event){

// Here some checks are made (with ajax request) and if you can not change the value is added to select a class to indicate the error.

});

如果我更改了select和点击按钮的值,那么一切都正确完成。保存数据或添加的类显示错误。

问题我必须要进行更改并自动保存。为此,我创建了一个select要更改,更改值以选择所有表,还有一个button应该运行表的所有按钮。

我使用“触发器”来模拟点击表格中的所有按钮,如下所示:

$(document).on('click',"#button_all",function(event){
   $("contenedor_registro_Ngrupos select[class='modified']").each(function(){  
      $(this).closest("tr").find("button").trigger("click");
   });
});

但我遇到的问题是当运行触发器并模拟点击时,只会将错误添加到要显示错误的最后一项,但不会添加上述内容。我试过alert();如果添加了错误的类,那么在函数内跟踪进程和站立执行以显示警报,所以我猜这将是每个实现Trigger的问题,这没有给出模拟功能执行单击按钮的时间。

我想知道如何解决这个问题,或者是否有另一种方法可以自动运行按钮的点击事件,而无需手动点击所有按钮。

* HTML:

<div id="contenedor_registro_Ngrupos" class="derecha contenedor_registro">
 <div>
  <div id="cabecera_lista">
   <h2>Educación Infantil</h2>
  </div>

  <div>
    <table class="records_list">
     <thead>
      <tr>
       <th></th>
       <th>Curso</th>
       <th>Nivel</th>
       <th>Nº Grupos</th>
       <th></th>
      </tr>
    </thead>
   </table>

  <div class="inner_table">
    <table>
      <tbody> 
         <tr>
            <td>
              <span class="oculto">*</span>
            </td>
            <td>3 años</td>
            <td>Infantil</td>
            <td>
              <select id="Ngrupo">
                <option value="1" selected="selected">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
              </select>
             </td>
             <td>
                 <button>Guardar</button>
             </td>
          </tr>
          <tr>
         <tr>
            <td>
              <span class="oculto">*</span>
            </td>
            <td>4 años</td>
            <td>Infantil</td>
            <td>
              <select id="Ngrupo">
                <option value="1" selected="selected">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
              </select>
             </td>
             <td>
                 <button>Guardar</button>
             </td>
          </tr>
          <tr>    //The same above code
          <tr>    //The same above code
          <tr>    //The same above code
          <tr>    //The same above code
         </tbody> 
        </table>
    </div>
  </div>
</div>

*图片:

选择时(你看到“3”应该显示“1”以选择该值,但在进行图像捕获之前无意中更改。并且三个值“1”为橙色,之前有另一个值,并且更改它们是添加了颜色的修改后的类。)

When selecting

当我点击全部保存(“Guardar Todo”按钮)

When I click Save All("Guardar Todo" Button)

当我点击保存每个按钮(“Guardar”按钮)

When I click on save each button ("Guardar" Button)

问题不在于函数或选择器,我遇到的问题是如何自动调用以模拟所有按钮的修改,这些按钮之前已添加到其他函数中。

1 个答案:

答案 0 :(得分:1)

jQuery.ajax(): - 执行异步HTTP(Ajax)请求。 Ajax设置是一组配置Ajax请求的键/值对。

  

Ajax设置选项 -

     

async(默认值:true):

     

默认情况下,所有请求都是异步发送的(默认设置为true)。如果需要同步请求,请设置此选项    false

     
    

请注意,同步请求可能会暂时锁定浏览器,并在请求处于活动状态时禁用任何操作。

  

在您的情况下,您尝试通过触发事件及时点击多个请求。因此,您可以从服务器获得适当的响应来处理它。