【问题标题】:Validation alert in modal dialog模态对话框中的验证警报
【发布时间】:2017-11-11 07:54:01
【问题描述】:

我的 Node-Express-Mongoose 应用程序中有一个用户列表。我需要单击更新链接以打开模式并通过单击模式上的保存更改按钮来更新用户信息。截图如下:

每当我在没有任何信息的模式下提交表单时,它都不会提醒我。 以下是相同的javascript:

$(document)
  .on('click', '.update_user', function(e) { //click on update link
    e.preventDefault();
    $('#edit_user').unbind('click');
    $('#edit_user').click(function() { //click on save changes button


      var user_name = $("#input_name").val();
      var user_age = $("#input_age").val();

      if (user_name == '' && user_age == '') {
        alert("Please Fill All Required Fields");
        return false;
      }

      var user_data = {
        user_name: user_name,
        user_age: user_age
      };


      $.ajax({
        url: '/users/update_user',
        type: 'post',
        ContentType: 'application/json',
        data: JSON.stringify(user_data),
        success: function(data, textStatus, jQxhr) {
          console.log(data);
          load_users();
        },
        error: function(jqXhr, textStatus, errorThrown) {
          console.log(errorThrown);
        }
      });

    });

  });

这是 EJS 文件:

<div aria-labelledby="myModalLabel" class="modal fade" id="openModal" role="dialog" tabindex="-1">
  <div class="modal-dialog" role="dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button aria-label="Close" class="close" data-dismiss="modal" type="button"><span aria-hidden="true">&times;</span></button>

        <h4 class="modal-title" id="myModalLabel">Update User :</h4>
      </div>


      <div class="modal-body">

        <!--		<form>
										Name:<input id="nameId" name="modal_username" type="text" value="" size="40"> <br>Age:<input id="ageId" size="3" name="modal_age" type="number" value="">
									</form> -->


        <form role="form">
          <div class="form-group">
            <label>Name</label>
            <input type="text" class="form-control" id="input_name" placeholder="Enter name" />
          </div>
          <div class="form-group">
            <label>Age</label>
            <input type="number" class="form-control" id="input_age" placeholder="Age" />
          </div>
        </form>

      </div>


      <div class="modal-footer">
        <button class="btn btn-default" data-dismiss="modal" type="button">Close</button> <button class="btn btn-primary" id="edit_user" type="submit">Save changes</button>
      </div>
    </div>
  </div>
</div>


<li>
  <%= userlist[i].name %>:
    <%= userlist[i].age %> <a class="delete_user" data-id="<%= userlist[i]._id %>" href="#" id="delete" title="Delete this User">Delete</a> || <a href="#openModal" class="update_user" data-target="#openModal" data-toggle="modal" id="update" title="Update user info" data-id="<%= userlist[i]._id %>">Update</a>
</li>
<%} %>

问题出在哪里?

【问题讨论】:

  • 您可以使用 $(document).ready(function() { $(.update).on('click'); }); 而不是 $(document).on('click'
  • @JalayOza 我试过了。我的 js 文件中的代码在 .ready 中。我还没有发布。
  • 尝试使用=== 而不是==

标签: javascript jquery node.js


【解决方案1】:

使用这个

$(".update").click(function (e) {
e.preventDefault();
    $('#edit_user').unbind('click');
    $('#edit_user').click(function() { //click on save changes button


      var user_name = $("#input_name").val();
      var user_age = $("#input_age").val();

      if (user_name == '' && user_age == '') {
        alert("Please Fill All Required Fields");
        return false;
      }

      var user_data = {
        user_name: user_name,
        user_age: user_age
      };


      $.ajax({
        url: '/users/update_user',
        type: 'post',
        ContentType: 'application/json',
        data: JSON.stringify(user_data),
        success: function(data, textStatus, jQxhr) {
          console.log(data);
          load_users();
        },
        error: function(jqXhr, textStatus, errorThrown) {
          console.log(errorThrown);
        }
      });

    });

});

希望对你有帮助

【讨论】:

  • 还是不行。我添加了 EJS 文件以供参考。可以的话请看一下。
  • 它对我不起作用。我也无法发现您所做的更改。
  • 嗨,Arjun,正如您在代码中看到的那样,我使用了点击事件 $(".update").click 这是您可以看到的更改,您可以看到我给您的 jsfiddle jsfiddle.net/jalayoza/szufxo3r,点击更新并单击保存更改,您将收到警报
  • 嗨 Jalay,它可以在 JSFiddle 中使用,但是我已经完全使用了您的代码,但仍然无法正常工作。我也找不到提到的点击事件 $(".update").click 在您的 JSFiddle 中。您的答案包含您提到的更改,但 JSFiddle 代码与我之前的代码完全相同,并且仍然有效。
  • 你添加了 jquery.min.js 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
  • 1970-01-01
  • 2015-11-24
  • 1970-01-01
  • 2018-11-08
  • 1970-01-01
  • 2015-02-19
相关资源
最近更新 更多