AJAX / Javascript在表单中然后提交它

时间:2012-02-19 16:04:11

标签: javascript jquery ajax forms jqtouch

我是php开发人员开始变得更加沉重的ajax我遇到了一个问题,我不知道如何解决。

我正在动态创建一个表单:

function addSearchResult(label, tz) {
    var html = '';
    html += '<div>'
    html += '<form id="product-form" >';
    html += '<div class="clock">'
    html += '<div class="hour"></div>'
    html += '<div class="min"></div>'
    html += '<div class="sec"></div>'
    html += '<input type="text" id="label" name="Label" placeholder="Label">'
    html += '</div>'
    html += '<div class="city">GMT</div>'
    html += '<a href="#" class="whiteButton submit" id="view-product-button" >View</a>'
    html += '</form>'
    html += '</div>'
    var insert = $(html);
    $('#search-results').append(insert.data('tz_offset', tz).find('.city').html(label).end());
}

我正在阅读表格结果:

$('#product-form').submit(function() {
    alert('OK');
    addProduct('Test Value', 'Test Produlct');
    $('input').blur();
    $('#add .cancel').click();
    this.reset();
    return false;
});

问题是,它不起作用。如果我将表单直接放在html中,它可以正常工作。但是通过ajax添加它,它不会发现表单存在。

我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:3)

使用快捷方式事件处理程序(例如submit()click())仅适用于在页面加载时放置在DOM中的元素。

对于动态添加的元素,您需要对jQuery 1.7+使用delegate()on()。试试这个:

&LT; jQ 1.7

$('#search-results').delegate('#product-form', 'submit', function() {
    // rest of your code
});

jQ 1.7 +

$('#search-results').on('submit', '#product-form', function() {
    // rest of your code
});