JQuery动态选择器无法在ajaxForm()中工作

时间:2013-06-10 14:34:04

标签: jquery

也许这个问题之前得到了回答,但我无法将问题与其他答案相提并论,但事实上我确实做过研究。

我正在使用ajaxForm(http://jquery.malsup.com/form/)并且我想使用相同的函数来提交多个表单,但我的jQuery选择器不起作用:

$('#'+ idForm).ajaxForm({

除了问你们之外,我不知道还能做什么。

这是我的代码:

http://jsfiddle.net/hRTcE/

HTML:

<form id="jsonForm" action="/echo/json/" method="post">Message:
    <input type="text" name="message" value="Hello JSON" />
    <input id="HHHHHHHHH" type="button" onclick="formSubmit(this)" value="onclick not working">
    <input type="submit" value="submit is working" />
</form>
<script type="text/javascript" src="http://malsup.github.com/jquery.form.js"></script>

JS:

function formSubmit(inputB) {
    alert('click does not work');
    var formulario = inputB.form;
    var idForm = inputB.form.id;
    var test = $('#jsonForm');

    //debugger;
    $('#' + idForm).ajaxForm({
        dataType: 'json',
        beforeSubmit: showRequest,
        success: processJson
    });
    return false;
}

function processJson(data) {
    //debugger;
    alert("it worked" + data);
    console.log("respose: " + data);
}
function showRequest(formData, jqForm, options) {
    //debugger;
    var queryString = $.param(formData);
    console.log('About to submit: \n' + queryString + '\n');
    return true;
}
$('#jsonForm').ajaxForm({
    dataType: 'json',
    beforeSubmit: showRequest,
    success: processJson
});

感谢!!!

3 个答案:

答案 0 :(得分:3)

在formSubmit方法

中使用ajaxSubmit而不是ajaxForm

ajaxForm只准备表单.it不提交

你可以这样做

function formSubmit(inputB) {
    alert('click does not work');
    var formulario = inputB.form;
    var idForm = inputB.form.id;
    var test = $('#jsonForm');

    //debugger;
    $('#' + idForm).ajaxSubmit({
        dataType: 'json',
        beforeSubmit: showRequest,
        success: processJson
    });
    return false;
}

答案 1 :(得分:2)

单击按钮时,您是否忘记在表单上调用提交?

像这样:

function formSubmit(inputB) {
    alert('click does not work');
    var formulario = inputB.form;
    var idForm = inputB.form.id;
    var test = $('#jsonForm');

    //debugger;
    $('#' + idForm).ajaxForm({
        dataType: 'json',
        beforeSubmit: showRequest,
        success: processJson
    });
    $('#' + idForm).submit();
    return false;
}

答案 2 :(得分:1)

您是否尝试通过其他方式访问表单?例如:

var formulario = $(inputB).parent('form');
var idForm = $(formulario).attr('id');

$('#' + idForm).ajaxForm({
    dataType: 'json',
    beforeSubmit: showRequest,
    success: processJson
});

//Just add this
$('#' + idForm).submit();

return false;

<强> [编辑]

只需添加以下行:

    //Just add this
    $('#' + idForm).submit();

适用于fiddle