在Load()内容

时间:2017-03-27 12:52:37

标签: javascript jquery ajax

嗨,所有这些都可能很容易修复,也许还有我对jQuery的误解。

我正在建立一个文档中心,当用户点击不同的按钮时,它会使用load()将表单加载到页面中,然后使用CSS将该表单显示在屏幕的中心。完成后,表单将由ajax提交表格。

我的函数包含在$(function(){})中;听取按钮点击并加载相关的内容,但是当加载表单时,提交监听器就会拿起表单。我假设因为生成DOM时没有包含表单这就是我的脚本无法读取的原因

function window_form(form="") {
  $('#popup_bg').addClass('show').load('/ajax/'+form);
  $('.closeWindow').live('click', function(e){
    $('#popup_bg').removeClass('show');
    $( "section" ).remove( ".windowCard" );
  });
}

$(function(){
  // Submission listener
  $('form').on('submit', function(e) {
    e.preventDefault();
    ajax_submit($(this));
  });
  // check for window form button and load the form
  $(".windowForm").click(function(e) {
    e.preventDefault();
    window_form($(this).data("form"));
  });
});

因此,页面上的任何表单都可以很好地工作,如果提交则发送到ajax_submit()。因此,有一种方法可以在加载完成后初始化表单,以便可以选择它们来购买提交功能。我正在寻找一个.live但不会被删除。

我可以将我的脚本包含在所有可用的表单文件中,但这看起来很麻烦并且加载了多个jquery会话。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

如果您有动态内容,则应在加载内容时绑定内容事件。您可以尝试以下代码:

function window_form(form = '') {
    $('#popup_bg').addClass('show').load('/ajax/' + form);
    $('.closeWindow').live('click', function(e){
    $('#popup_bg').removeClass('show');
    $('section').remove('.windowCard');
  });
}

$(function(){
  // Submission listener
  $('form').on('submit', function(e) {
    e.preventDefault();
    ajax_submit($(this));
  });
  // check for window form button and load the form
  $('body').on('click', '.windowForm', function(e) {
    e.preventDefault();
    window_form($(this).data("form"));
  });
});

更新:我修改了示例以便更好地理解。这是你的test.js文件:

// ********************************************
// Global Varables
// ********************************************
var Window = $(window);
var TheDoc = $(document);
var ViewWidth = Window.width();
var Body = $("body");

// ********************************************
// SITE FUNCTIONS
// ********************************************
function window_form(form) {
    $('#popup_bg').addClass('show').load('/ajax/' + form, function () {
        $('form').validate();
    });
}

// ********************************************
// SITE INTERACTIONS
// ********************************************
$(function () {
    // Submission listener
    $('body').on('submit', 'form', function (e) {
        e.preventDefault();
        var $form = $(this);
        if ($form.valid()) {
            var ajaxData = new FormData($form.get(0));
            ajaxData.append('action', $form.attr("id"));
            console.log(ajaxData);
        }
    }).on('click', '.windowForm', function (e) {
        e.preventDefault();
        window_form($(this).data("form"));
    });
});

答案 2 :(得分:0)

嗨亚历克斯所以这里是文件

test.js

// ********************************************
// Global Varables
// ********************************************
var Window          = $(window);
var TheDoc          = $(document);
var ViewWidth       = Window.width();
var Body          = $("body");

// ********************************************
// SITE FUNCTIONS
// ********************************************
function window_form(form = '') {
  $('#popup_bg').addClass('show').load('/ajax/' + form, function() {
    $('form').validate();
  });
}

function ajax_submit(form) {
  var $form          = form;
  $form.on( 'submit', function(e) {
    e.preventDefault();
    if($form.valid()) {
      var ajaxData  = new FormData($form.get(0));
      ajaxData.append('action', $form.attr("id"));
      console.log(ajaxData);
    }
  });
}


// ********************************************
// SITE INTERACTIONS
// ********************************************
$(function(){
  // Submission listener
  $('form').on('submit', function(e) {
    e.preventDefault();
    ajax_submit($(this));
  });
  // check for window form button and load the form
  $('body').on('click', '.windowForm', function(e) {
    e.preventDefault();
    window_form($(this).data("form"));
  });
});

要加载的表单first_case.php

<?php require_once( '../../../includes/initialise.php' ); ?>

<section class="card windowCard">
  <header>
    <span class="icon closeWindow">x</span>
  </header>
  <div class="ajaxReply"></div>
  <h2>Enter The IPS Case Code</h2>
  <p>Please enter the IPS case cade as found on your creditors letter. This case will then be added to your account.</p>
    <form name="login" id="attachCase" class="form" action="process/cases.php" method="post" data-type="json" >
        <fieldset>
            <legend>Case Code Format <strong>ABCD01A</strong></legend>
            <p class="formRow">
                <input type="text" name="code[]" id="" aria-describedby="error" class="input code" maxlength="1" placeholder="A" />
                <input type="text" name="code[]" id="" aria-describedby="error" class="input code" maxlength="1" placeholder="A" />
                <input type="text" name="code[]" id="" aria-describedby="error" class="input code" maxlength="1" placeholder="A" />
                <input type="text" name="code[]" id="" aria-describedby="error" class="input code" maxlength="1" placeholder="A" />
                <input type="text" name="code[]" id="" aria-describedby="error" class="input code" maxlength="1" placeholder="0" />
                <input type="text" name="code[]" id="" aria-describedby="error" class="input code" maxlength="1" placeholder="0" />
        <input type="text" name="code[]" id="" aria-describedby="error" class="input code" maxlength="1" placeholder="A" />
            </p>
            <p class="formRow">
                <button type="submit" name="submit" class="blueBtn iconBtn" data-icons="s">Add Case</button>
            </p>
        </fieldset>
    <div class="working">
      <div class="loader"></div>
    </div>
    </form>
</section>

然后在index.php中有一个加载此表单的按钮

<div class="widget col-3 last">
                    <button class="windowForm blueBtn" data-form="forms/first_case.php">New Proxy Form</button>
                </div>