通过单选按钮更改 Jquery 表单提交

Posted

技术标签:

【中文标题】通过单选按钮更改 Jquery 表单提交【英文标题】:Jquery form submission via radio button change 【发布时间】:2016-06-24 18:56:05 【问题描述】:

我的网站有一个新闻管理脚本,允许我添加、更新和删除新闻。我决定使用 jQuery 来让事情变得更顺畅,虽然我已经让添加/编辑/删除部分工作了,但我想在默认页面上添加一个简单的函数来进行新闻编辑。

当您访问默认新闻页面时,您会看到一个简单的以前新闻帖子的列表。显示的列是:

新闻标题、作者、发布日期、活动、编辑

对于“活动”列,我想要一个简单的开关来设置为“活动”或“非活动”。一旦该开关被翻转,相应的新闻帖子就会被更新,而无需重新加载整个页面。它只是执行。

(UI 的附注:我还想为该新闻帖子的表格的单元格颜色设置动画,但这将是我稍后可以解决的问题)

目前 news-list.php 脚本像这样加载每一行:

$news_edit_options .= "<tr id=\"" . $row["newsid"] . "\">";
$news_edit_options .= "     <td>" . $row["title"] . "</td>";
$news_edit_options .= "     <td>" . $row["login"] . "</td>";
$news_edit_options .= "     <td>" .$row["date_released"] . "</td>";
$news_edit_options .= "     <td>";
$news_edit_options .= "       <form method=\"post\" action=\"news-activator.php\" class=\"news-activator\">";
$news_edit_options .= "          <input type=\"hidden\" name=\"newsid\" value=\"" . $row["newsid"] . "\">";
$news_edit_options .= "          <input type=\"radio\" name=\"active\" value=\"0\"";
if ($row["active"] == 0) 
     $news_edit_options .= " checked";

$news_edit_options .= "> inactive <br />";

$news_edit_options .= " <input type=\"radio\" name=\"active\" value=\"1\"";
if ($row["active"] == 1) 
     $news_edit_options .= " checked";

$news_edit_options .= "> active";
$news_edit_options .= "  </form>";
$news_edit_options .= "</td>";
$news_edit_options .= "     <td><button type=\"button\" class=\"btn btn-primary newsbutton\" data-toggle=\"modal\" data-target=\"#newsModal\" id=\"" . $row["newsid"] . "\">Edit</button></td>";
$news_edit_options .= "</tr>";

这很好。现在进入 jQuery:

$.when(LoadAPage('#news-list','news-list.php')).done(function() 
    $("input[type=radio]").change(function() 
        $(this).closest("form").submit(function() 
        // do stuff here
        );
    );
);

这行不通。 .submit(function() ); 部分完全不起作用。但是,当我将其更改为:

$.when(LoadAPage('#news-list','news-list.php')).done(function() 
    $("input[type=radio]").change(function() 
        $(this).closest("form").submit();
    );
);

这会“工作”,但表单只是提交,我无法使用 jQuery 捕获数据并做我想做的所有事情。我确实尝试了复选框,但遇到了同样的问题。

我有一种感觉,我只是遗漏了一些东西或接近这一切都是错误的。有什么想法吗?

【问题讨论】:

【参考方案1】:

试试这个。我认为您的两次尝试都完成了一半,您只需将它们组合在一起即可:)

$.when(LoadAPage('#news-list','news-list.php')).done(function() 
    $("input[type=radio]").change(function() 
        $(this).closest("form").submit(function(e) 
           e.preventDefault();
           alert("the form was submitted");
        );
        $(this).closest("form").submit();
    );
);

第一个提交函数告诉 jQuery 在提交表单时要做什么。 e.preventDefault(); 阻止默认操作(即在您有时间执行任何其他 jQuery 之前提交表单并重新加载页面)。

第二个.submit(); 触发表单提交,它运行来自我们提交处理函数的代码。

【讨论】:

以上是关于通过单选按钮更改 Jquery 表单提交的主要内容,如果未能解决你的问题,请参考以下文章

jQuery,阻止表单提交,然后继续

jQuery多行表单:禁用提交,直到每行都选中了一个单选

jquery,在提交之前设置单选字段的按钮

选择多个单选按钮(通过 jquery、javascript?)

JQUERY - 通过多次提交更改隐藏输入

在jQuery中,让表单当中的radio按钮默认选中第一个怎么做?