当前位置: 首页 > 知识库问答 >
问题:

提交后保持单选按钮在表单中,但jQuery函数不起作用

董联
2023-03-14

我有一个简单的表单,有一些输入,两个单选按钮和两个不同的隐藏div。div的显示取决于用户单击的按钮。假设用户选择了一个单选按钮,但表单的一个输入中存在错误。当我单击submit按钮,表单再次加载,显示错误时,我希望已选中previous choosen单选按钮。我通过输入代码中的php代码实现了这一点。现在我的问题是,当表单再次加载时,单选按钮被选中,但需要显示的隐藏div保持隐藏。我如何解决这个问题?非常感谢你的回答。

HTML代码:

<form method="post"> 
    <input type="radio" name="button" id="button1" value="1" <?php if($_SERVER['REQUEST_METHOD'] == 'POST'){if(empty($error) && $button=="1"){ echo 'checked="checked"'; }} ?> /> 
    <label>Button 1</label><br />
    <input type="radio" name="button" id="button2" value="2" <?php if($_SERVER['REQUEST_METHOD'] == 'POST'){if(empty($error) && $button=="2"){ echo 'checked="checked"'; }} ?> /> 
    <label>Button 1</label><br />
    <div id="one">Div one</div>
    <div id="two">Div two</div>
    <input type="submit" value="submit" />
</form>

JQUERY代码:

   $('#button1').click(function(){
       if($(this).is(':checked')){
           $('#one').show();
           $('#two').hide(); 
       }
   });
   $('#button2').click(function(){
       if($(this).is(':checked')){
           $('#one').hide();
           $('#two').show(); 
       }
   });

PHP代码

$error = array();

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

    if (!empty($_POST["button"])){  
        $button = $_POST["button"];
    }

    if (empty($_POST["button"])){   
        $error []= "Choose one option";       
    }   
}

共有2个答案

柳墨一
2023-03-14

我不确定这是否是你所寻求的答案,但这是一个更好的方法来实现你的目标。在JQuery中,编写一个名为myForm\u validate()的函数,并使用它验证输入。因此,根据你的例子,你会写:

function myForm_validate() {
   //check for your two inputs to have values, in this case radio buttons

   var foundErrors = false;

   $("#myForm input").each(function() {
     if($(this).is(":checked") == false) { //no choice was selected
        foundErrors = true;
        return false;
     }
   });

   return foundErrors;
 }

然后,在表单提交上编写一个函数。

$("#myForm").submit(function(event) {
   var checkForErrors = myForm_validate();

   if(checkForErrors == true) { //there were errors in the form
      event.preventDefault(); //prevent the form from actually submitting
   }
 });

因此,在表单提交中,这段代码将根据validate函数中的条件检查错误。如果未发现错误,则继续提交。如果发现错误,将阻止提交。

越俊艾
2023-03-14

重新加载页面时,用于检查div的函数不会运行,因为您已将它们绑定到click事件。将单击事件函数移动到它们自己的函数中,并让它们在文档上运行。就绪

var showHide = function(){
    if($('#button1').is(':checked')){
         $('#one').show();
         $('#two').hide(); 
    }

    if($('#button2').is(':checked')){
         $('#one').hide();
         $('#two').show(); 
    }
   };

$(document).ready(showHide);
$('input[name="button"]').click(showHide);
 类似资料:
  • 问题内容: 考虑: 提交表单时,如何确保下拉列表中的选定值保持选中状态?此表单位于WordPress(PHP)内部。 问题答案: 为了避免许多if-else结构,让JavaScript自动完成:

  • 问题内容: 大家好,我有一个联系表格,验证码在那里。提交表格后,我想保留支票。我发布了文本框值,它显示正确,但复选框不起作用。这是我的代码。 提交表格后如何保留复选框? 问题答案: 更改 至 这将使复选框保持选中状态。

  • 问题内容: 我正在尝试通过AJAX提交表单,而不是使用常规的POST提交。HTML只是一个标准格式,我的jQuery代码如下: (基于此答案) 我从Submit函数返回false,但是表单仍在提交,我不知道为什么。没有收到任何Firebug错误。 问题答案: 如果html设置正确,则您的代码可以正常工作。这是我的测试html(使用php),因此您可以将其与自己的进行比较。

  • 问题内容: 我有一个表格。在该表格之外,我有一个按钮。一个简单的按钮,如下所示: 但是,当我单击它时,它会提交表单。这是代码: 该按钮应该做的就是编写一些JavaScript。但是,即使看起来像上面的代码一样,它也会提交表单。当我将标签按钮更改为跨度时,它可以完美工作。但不幸的是,它必须是一个按钮。有什么办法可以阻止该按钮提交表单?像例如 问题答案: 我认为这是HTML最令人讨厌的小特性。该按钮必

  • 问题内容: 我有一个看起来像这样的表格: 当我绑定到表单的Submit()时,似乎无法访问用户单击的图像。因此,我试图绑定到单击图像本身(),该图像总是提交表单,无论我是否尝试 返回false; event.stopPropogation(); 要么 event.preventDefault(); 因为所有这些都是表单事件。 我应该将$ .post()附加到form.submit()事件上吗,如果

  • 我想通过选择单选按钮,然后单击立即购买按钮,重定向到在线支付页面或钱包支付页面。当我点击buy now按钮时,表格也会提交。 这是一个订单页面,人们将填写表单,然后选择产品,然后选择付款类型。此页面将把数据带到数据库,然后将这些数据显示到下一页面,即钱包支付或在线支付。我是拉雷维尔的新手。如果有人能给出解决方案,那将非常有帮助。