jQuery的 - 形式仍然将返回false提交形式、jQuery、false

2023-09-10 20:36:01 作者:伪情人

http://jsfiddle.net/QsTfc/

对于一些奇怪的原因,形式不断提交即使我返回false。我曾尝试:

  $(#submitEdit)。递交(函数(){
    返回false;
});

$(#submitEdit)。递交(函数(){
    。事件preventDefault();
});
 

这是我目前有:

 <脚本>

$('A')。点击(函数(){
    VAR parentId的= $(本).closest(TR)ATTR('身份证')。
    变种子= $(#+ parentId的)。儿童()当量(1)。
    VAR childText = $(孩子)的.text();
    $(孩子)的.html('<形式的行动=< PHP的回声网址;>用户/ changeSettings /+ parentId的+'的方法=POSTID =submitEdit><输入类型=文本名称=+ parentId的+'值=+ childText +/>< /形式GT;');
    执行console.log(childText);
});

$(#submitEdit)。在(提交,函数(){
    VAR URL = $(本).attr(行动);
    VAR数据= $(本).serialize();
    警报(数据);
    $。员额(URL,数据,函数(返回){
        $(parentId的+字段)HTML(返回);
        返回false;
    });
    返回false;
});

< / SCRIPT>
 
jquery表单验证Ajax提交

解决方案

根据你的jsfiddle演示的形式dinamically添加。所以,你必须使用委派:

  $(文件)。在(提交,#submitEdit,函数(){
    VAR URL = $(本).attr(行动);
    VAR数据= $(本).serialize();
    警报(数据);
    $。员额(URL,数据,函数(返回){
        $(parentId的+字段)HTML(返回);
        返回false;
    });
    返回false;
});
 

的jsfiddle

http://jsfiddle.net/QsTfc/

For some odd reason the form keeps submitting even though I am returning false. I have tried:

$("#submitEdit").submit(function() {
    return false;
});

$("#submitEdit").submit(function() {
    event.preventDefault();
});

And this is what I currently have:

<script>

$('a').click(function() {
    var parentId = $(this).closest('tr').attr('id');
    var child = $("#" + parentId).children().eq(1);
    var childText = $(child).text();
    $(child).html('<form action="<?php echo URL; ?>user/changeSettings/' + parentId + '" method="POST" id="submitEdit"><input type="text" name="' + parentId + '" value="' + childText + '" /></form>');
    console.log(childText);
});

$("#submitEdit").on("submit", function() {
    var url = $(this).attr('action');
    var data = $(this).serialize();
    alert(data);
    $.post(url, data, function(returned) {
        $(parentId + "Field").html(returned);
        return false;
    });
    return false;
});

</script>

解决方案

According to your jsfiddle demo your form is added dinamically. So, you have to use delegation:

$(document).on("submit", "#submitEdit", function() {
    var url = $(this).attr('action');
    var data = $(this).serialize();
    alert(data);
    $.post(url, data, function(returned) {
        $(parentId + "Field").html(returned);
        return false;
    });
    return false;
});

JSFIDDLE