【问题标题】:How to change the div after submit the form?提交表单后如何更改div?
【发布时间】:2017-03-08 17:35:18
【问题描述】:

提交表单后如何更改表单和结果的div背景?我想将表单的背景和结果从图像更改为颜色。

如何做到这一点?我正在尝试我找到的这个解决方案,但它不起作用,http://jsfiddle.net/tymeJV/YL6Da/

Jsfiddle

<form action="" method="post" name="locator">
    <div class="locator-div">
        <select name="locator1_list" id="filterby">
            <option name="default" class="filter_by" value="Select by">Select by</option>
        </select>
    </div>
    <span class="or">or</span>
    <div class="locator-div">
        <select name="locator1_list" id="filterby">
            <option name="default" class="filter_by" value="Select by">Select by</option>
        </select>
    </div>
    <input type="submit" value="List all locations" class="location-submit">
</form>

<div class="records"><div><span class="icons-tabbed-store icon-icon-stores"> Location 1</span></div></div>

【问题讨论】:

    标签: javascript jquery html css forms


    【解决方案1】:

    试试这样:

    $("form").submit(function(e) {
    
         e.preventDefault();
        var bool = false;
        
        if (bool) {
            $("form").addClass("success");
            $(".records").addClass("error");
        } else {
            $("form").addClass("error");
            $(".records").addClass("success");
        }
    });

    复制该 css 类并添加 background-image:none

    【讨论】:

      【解决方案2】:

      我不确定,但无论如何我都猜对了。

      如果你需要改变任何元素的样式,你需要做的就是使用这个jQuery css方法,例如:-

      $("#message").css("background-color","green")
      

      或者你可以使用 AddClass 方法,这就是你在 fiddle 上所做的

      为什么它不起作用,那是因为您在 textarea 中编写了内联样式

      style="color: white; background-color: grey; display: none
      

      并且内联样式具有最高优先级,因此它将替换/覆盖任何用外部css类编写的样式,例如“.success”

      因此,您可以选择使用类并使用 AddClass / removeClass 方法,并且不要在标签本身中编写样式

      使用内联样式并使用 css 方法来更新它

      【讨论】:

        【解决方案3】:

        您想要同步还是异步?如果是Asynch,则需要使用AJAX:

        $("#id-of-form").submit(function(e) {
        e.preventDefault();
        
        $.ajax({
            url: 'url-of-form',
            type: 'post',
            success: function (response)
            {
                var bool = false;
        
                if (bool) {
                    $("#message").fadeIn("slow").removeAttr("style").addClass("success").text("Successful!");
                } else {
                    $("#message").fadeIn("slow").removeAttr("style").addClass("error").text("Failed");
                }
            }
        }); 
        });
        

        基本上,您在这里所做的是将一个函数附加到提交事件并通过 Ajax 重新提交它,从而进行异步调用。

        如果你想要同步,你需要使用 PHP 或任何你正在使用的语言。

        【讨论】:

        • 抱歉回复晚了。但我没有使用 ajax
        • 当您提交表单时,它会向您提供的操作发送请求,您自己附加的代码并在发送请求之前被激活,它永远不会起作用。你需要使用你的服务器端语言,你的语言是什么?
        • 提交表单时,我使用的是典型的if(isset($_POST['submit'])){
        • 好吧,你想要像&lt;form action="" method="post" name="locator" class="&lt;?php echo isset($_POST['submit']) &amp;&amp; $_POST['your-var-name'] == 'something' ? 'success' : 'error' ?&gt;"&gt;这样的东西,它被称为三元运算符,基本上是一个IF条件简写...
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-25
        相关资源
        最近更新 更多