【问题标题】:Conflict two HTML forms冲突两个 HTML 表单
【发布时间】:2014-12-04 15:54:36
【问题描述】:

我有两个相互冲突的表格 我想更改“var form = $('form');”中的表单 ID比如“var form = $('myForm');” 如果我将 id 表单更改为 myForm,请告诉我,在这种情况下,在下面的代码中我可以如何合并:

 $(document).ready(function(){
        var form = $('form');
        var submit = $('#submit');

        form.on('submit', function(e) {
            // prevent default action
            e.preventDefault();
            // send ajax request
            $.ajax({
                url: 'ajax_comment.php',
                type: 'POST',
                cache: false,
                data: form.serialize(), //form serizlize data
                beforeSend: function(){
                    // change submit button value text and disabled it
                    submit.val('Submitting...').attr('disabled', 'disabled');
                },
                success: function(data){
                    // Append with fadeIn see http://stackoverflow.com/a/978731
                    var item = $(data).hide().fadeIn(800);
                    $('.comment-block').append(item);

                    // reset form and button
                    form.trigger('reset');
                    submit.val('Submit Comment').removeAttr('disabled');
                },
                error: function(e){
                    alert(e);
                }
            });
        });
    });

HTML 代码:

<form class="form-horizontal" role="form" id="form" method="post">
                    <!-- need to supply post id with hidden fild -->
                    <input type="hidden" name="filmId" value="<?php echo $row['filmId']?>">
                    <div class="form-group">                        
                        <div class="col-sm-2">
                            <label>Name *</label>
                        </div>
                        <div class="col-sm-10">
                            <input class="form-control" type="text" name="name" id="comment-name" placeholder="Your Name" required>
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-sm-2">
                            <label>Email *</label>
                        </div>
                        <div class="col-sm-10">
                            <input class="form-control"type="email" name="mail" id="comment-mail" placeholder="Your Email" required>
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-sm-2">
                            <label>Comment *</label>    
                        </div>  
                        <div class="col-sm-10">
                            <textarea class="form-control" rows="5" name="comment" id="comment" placeholder="Type your comment here...." required></textarea>
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-sm-offset-2 col-sm-10">
                            <input type="submit" class="btn btn-primary" id="submit" value="Submit Comment">
                        </div>
                    </div>
                </form>

【问题讨论】:

  • 冲突到底是什么?现在,您正在使用一个选择器,它可以选择 DOM 中的任何表单元素,而不管 ID 是什么。如果您想定位特定表单,请定位 ID。

标签: javascript html forms


【解决方案1】:

你必须使用jquery的Id选择器

$("#formId")

而不是您使用的“表单”类。

您的简化 HTML:

<form id="form1">                 
<input type="submit" id="submit1"/>                    
</form>

<form id="form2">                
<input type="submit" id="submit2"/>               
</form>

简化的 JS:

var form1 = $('#form1');
var submit1 = $('#submit1');
form1.submit(function(e) {
    alert('hey1');
    // prevent default action
    e.preventDefault();
    // send ajax request
});

var form2 = $('#form2');
var submit2 = $('#submit2');
form2.submit(function(e) {
    alert('hey2');
    e.preventDefault();
});

JSFIDDLE中的结果http://jsfiddle.net/jzb2hn9j/

【讨论】:

  • @clement 我如何修改上面的代码,因为我知道基本的 JS
  • 请给我看HTML代码,我会再帮你的
  • @RRPandey:我可以看看这两个表格吗?
  • 在 HTML 中:id="form" => id="form1" 和 id="submit" => id="submit1"。在 JS 中:$('form'); => $('#form1') 和 $('#submit') => $('#submit1')
  • 这是来自您的代码,为您简化:jsfiddle.net/jzb2hn9j@RRPandey
【解决方案2】:

像这样给每个表单一个id

<form id="firstForm" method="post">
    ..... form data
</form>

<form id="secondForm" method="post">
    ..... form data
</form>

然后就这样选择表格

var formOne = $("#firstForm"),
    formTwo = $("#secondForm");

【讨论】:

  • 请告诉我如何在上面的 javascript 代码中将 id 从 form 更改为 firstForm
  • 在我的回答中看一下代码的顶部 sn-p,您的表单的 id 不是 form 即标签,您需要通过添加在 html 中给它一个 id您的表单标签的 id 属性id="firstForm"
  • 所以对于您的 html,它将是 &lt;form class="form-horizontal" role="form" id="firstForm" method="post"&gt;
  • 是的,我明白,但我如何在 abobe Javascript 代码中更改相同的内容?
  • 您有点不清楚您在这里尝试实现的目标,您是否只是想通过 ajax 提交 ID 为 #form 的表单?在这种情况下,您会将您的 JavaScript 更改为 var form = $('#form'); 或者您是否尝试通过 ajax 提交两种表单,但是当您提交一个时,它实际上同时提交了两个?
猜你喜欢
  • 2019-08-07
  • 2017-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多